codegrade 16.1.56__tar.gz → 16.1.57__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.56 → codegrade-16.1.57}/PKG-INFO +1 -1
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/_just.py +9 -3
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/_nothing.py +8 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/__init__.py +1 -1
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/client.py +2 -2
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/__init__.py +5 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/all_site_settings.py +54 -0
- codegrade-16.1.57/codegrade/models/always_update_pii_with_lti_setting.py +56 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_grader.py +38 -35
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_user.py +2 -2
- codegrade-16.1.57/codegrade/models/hubspot_syncing_enabled_setting.py +56 -0
- codegrade-16.1.57/codegrade/models/name_and_email_from_nrps_only_setting.py +56 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/site_setting_input.py +11 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/user_without_group.py +7 -4
- {codegrade-16.1.56 → codegrade-16.1.57}/pyproject.toml +1 -1
- {codegrade-16.1.56 → codegrade-16.1.57}/setup.py +1 -1
- {codegrade-16.1.56 → codegrade-16.1.57}/README.md +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_dt_utils/__init__.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/__init__.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/_maybe.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/_type_helpers.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/cg_maybe_plugin.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_maybe/utils.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/__init__.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_any_value.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_convert.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_enum.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_form.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_lazy.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_list.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_literal.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_mapping.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_multipart.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_nullable.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_parse_utils.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_query.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_rich_value.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_swagger_utils.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_swaggerize.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/_utils.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/exceptions.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/cg_request_args/request_args_plugin.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/__init__.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/about.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/assignment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/auto_test.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/comment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/course.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/course_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/file.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/git_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/group.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/group_set.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/login_link.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/lti.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/notification.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/oauth_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/oauth_token.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/permission.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/plagiarism.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/role.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/section.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/site_settings.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/snippet.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/sso_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/submission.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/task_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/tenant.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/transaction.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/user.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/user_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/_api/webhook.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/errors.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/_base_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/_saml_ui_logo_info.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/_submission_rubric_item_data_parser.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/about.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/abstract_role.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/add_users_section_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/all_auto_test_results.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/analytics_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/any_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/any_error.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/any_non_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/any_redacted_auto_test_step_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/api_codes.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_anonymization_algo.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_default_grading_scale_points_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_default_grading_scale_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_description_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_description_on_teachers_submissions_page_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_done_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_export_column.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_feedback.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_grading_scale_points_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_kind.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_login_link.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_max_points_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_peer_feedback_connection.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_peer_feedback_settings.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_percentage_decimals_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_percentage_grading_settings.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_point_decimals_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_points_grading_settings.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_section_timeframe.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_state_enum.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_submission_mode.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_template.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/assignment_timeframes.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/at_image_caching_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_capture_points_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_checkpoint_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_code_quality_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_fixture.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_global_setup_output.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_global_setup_script.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_heartbeat_interval_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_heartbeat_max_missed_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_io_test_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_io_test_sub_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_concurrent_batch_runs_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_global_setup_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_jobs_per_runner_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_per_student_setup_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_result_not_started_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_time_command_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_max_unit_test_metadata_length_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_quality_comment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_result_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_result_with_extra_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_run.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_run_program_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_runner.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_runner_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_set.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_base_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_base_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_log_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_result_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_step_validation_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_suite.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/auto_test_unit_test_message_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/automatic_lti1p3_assignment_import_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/automatic_lti_role_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_about.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_auto_test_quality_comment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_comment_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_comment_base_with_normal_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_comment_reply.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_course_coupon.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_directory.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_error.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_file.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_lms_capabilities.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_lti1p1_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_lti1p3_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_lti_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_notification.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_release_info.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_rubric_item.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/base_tenant_coupon.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/blackboard_zip_upload_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/bulk_enroll_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/canvas_course_id_copying_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/cg_ignore_version.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/change_user_role_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/check_points_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/check_points_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/check_points_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/check_points_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/clone_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_editor_output_viewer_title_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_base_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/code_quality_penalties.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/column_range.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/comment_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/comment_reply.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/comment_reply_edit.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/comment_reply_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/comment_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/community_library_publishing_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/community_library_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/connect_repository_git_provider_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/copy_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/copy_rubric_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/coupon_data_parser.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/coupon_with_code.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/coupon_without_code.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_bulk_enroll_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_bulk_register_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_coupon.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_coupon_usage.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_gradebook_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_gradebook_render_warning_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_of_course_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_of_tenant_coupon_usage.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_perm_map.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_permission.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_register_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_register_response.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_registration_link.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_role.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_section.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_section_division.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_section_division_connection.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_section_division_user.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_snippet.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/course_statistics_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_assignment_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_comment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_comment_reply_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_division_section_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_group_group_set_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_group_set_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_lti_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_output_html_proxy_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_proxy_submission_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_repository_git_provider_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_role_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_section_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_snippet_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_snippet_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_sso_provider_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/create_tenant_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/csv_large_file_limit_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/csv_too_many_errors_limit_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/currency.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/custom_output_log_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/default_course_ta_role_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/default_course_teacher_role_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/default_submission_page_tab_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/deleted_comment_reply.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/deletion_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/directory_with_children.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/disabled_setting_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/display_grades_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/editor_enabled_for_teachers_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/editor_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/email_notification_types.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/email_students_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/email_users_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/exam_login_max_length_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/export_assignment_csv_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/export_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/export_assignment_files_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_auto_test_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_auto_test_run.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_course.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_course_registration_link.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_course_section.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_group.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_job.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_tenant.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_transaction.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extended_work.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extract_file_tree_directory.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/extract_file_tree_file.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/failed_to_send_email_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/feedback_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/feedback_threads_initially_collapsed_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/feedback_with_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/feedback_without_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/file_deletion.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/file_rule.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/file_rule_input_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/file_tree.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/file_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/first_phase_lti_launch_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/fixed_availability.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/fixed_grade_availability.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/fixture_like.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/fraction.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/frontend_site_settings.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/general_feedback_comment_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/general_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/general_feedback_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/git_repositories_page.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/git_repository_like.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/git_user_info.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/github_template_repo_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/global_perm_map.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/global_permission.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/grade_history.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/grade_origin.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/grading_notifications_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/group.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/group_not_ready_for_submission_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/group_set.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/groups_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/has_unread_notifcation_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/health_information.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/hide_code_editor_filetree_controls_with_only_quiz_steps_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/hide_code_editor_output_viewer_with_only_quiz_steps_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/hide_empty_rubric_row_description_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/ignore_handling.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/ignored_files_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/import_into_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/import_into_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/incremental_rubric_submission_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/inline_feedback_comment_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/inline_feedback_comment_base_with_extended_replies.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/inline_feedback_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/inline_rubric_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/invalid_group_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/invalid_io_cases_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/invalid_options_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_base_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_input_case.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_option.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_step_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/io_test_step_log_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/is_admin_permission_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/job.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/json_create_auto_test.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/json_create_tenant.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/json_patch_auto_test.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/json_patch_submit_types_assignment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_base_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/junit_test_log_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/jwt_access_token_expires_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/legacy_features.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/line_range.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/linter_comment.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/linters_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lms_capabilities.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/login_token_before_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/login_user_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/logout_response.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/logout_user_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p1_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p1_provider_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_nonce_and_state_validation_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_parse_most_privileged_role_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_prevent_nonce_reuse_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_provider_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_provider_presentation_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti1p3_system_role_from_context_role_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_first_launch_content_id_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_launch_data_logging_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_lock_date_copying_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_provider_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/lti_unset_deadline_lock_date_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_document_update_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_dynamo_file_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_dynamo_submission_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_file_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_large_upload_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_lines_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_normal_upload_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_number_of_files_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_plagiarism_matches_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/max_user_setting_amount_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/min_password_score_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/mirror_file_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/missing_cookie_error.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/missing_file.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_allowed_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_build_max_command_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_build_output_limit_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_copying_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_current_initial_build_ids_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_diff_viewer_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_initial_build_id_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_max_dynamodb_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_max_file_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_max_output_files_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_max_storage_size_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_old_submission_age_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_test_max_command_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_test_output_limit_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/new_auto_test_uncollapsing_step_output_delay_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/no_permissions.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/non_deleted_comment_reply.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/non_finalized_lti1p1_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/non_finalized_lti1p3_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/non_present_preference.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_comment_reply_notification_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_general_feedback_reply_notification_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_poll_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_reasons.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notification_setting_option.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/notifications_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/oauth_provider.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/oauth_token.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/option.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/options_input_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/output_viewer_animation_limit_lines_count_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/parse_api_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch1_p1_provider_lti_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch1_p3_provider_lti_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_all_notification_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_comment_reply_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_grader_submission_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_notification_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_notification_setting_user_setting_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_provider_lti_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_role_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_role_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_role_tenant_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_rubric_category_type_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_rubric_result_submission_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_section_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_settings_tenant_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_site_settings_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_snippet_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_snippet_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_submission_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_submit_types_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_tenant_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_ui_preference_user_setting_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/patch_user_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/pay_with_coupon_course_price_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/pearson_templates_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/peer_feedback_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/permission_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_bulk_export_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_bulk_export_max_cases_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_case.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_pdf_export_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_run.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_run_plagiarism_assignment_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_run_plagiarism_course_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/plagiarism_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/post_oauth_token_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/present_preference.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/proxy.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/put_description_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/put_enroll_link_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/put_price_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/put_price_tenant_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/put_rubric_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/quality_comment_severity.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/quality_comments_in_code_editor_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/quality_test_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/quality_test_log_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/register_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/register_user_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/register_user_with_link_course_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/release_info.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/release_message_max_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rename_group_group_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/render_html_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/repository_connection_limit_reached_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/reset_token_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_get_auto_test_get.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_get_task_result_get_all.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_post_login_link_login.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_post_section_create_division.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_post_user_login.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/result_data_post_user_register.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/role_as_json_with_perms.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/root_file_trees_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_description_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_enabled_for_teacher_on_submissions_page_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_item.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_item_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_lock_reason.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_row_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_row_base_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubric_row_base_input_base_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rubrics_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/rule_type.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/run_program_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/run_program_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/run_program_extra.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/run_program_input_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/run_program_log.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/saml2_provider_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/saml_ui_info.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/sections_in_submission_list_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/send_registration_email_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/server_time_correction_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/server_time_diff_tolerance_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/server_time_sync_interval_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/setting_token_time_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/setup_oauth_result.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/simple_submission_mode_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/simple_submission_navigate_to_latest_editor_session_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/site_email_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/snippet.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/sso_infer_global_staff_role_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/sso_username_decollision_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/staged_assignment_importer_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/start_payment_course_price_close_tab_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/start_payment_course_price_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/start_payment_course_price_redirect_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/started_transaction.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/student_payment_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/submission_validator_input_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/submissions_per_page_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/task_result_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tax_behavior.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_coupon.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_coupon_usage.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_coupon_with_code.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_coupon_without_code.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_course_statistics.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_of_tenant_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_permissions.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_price.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_role_as_json_with_perms.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/tenant_statistics.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/test_submission_copying_on_import_enabled_setting.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/timed_availability.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/timeframe_like.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/token_revoked_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/transaction.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/transaction_state.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/types.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/update_peer_feedback_settings_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/update_set_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/update_suite_auto_test_base_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/update_suite_auto_test_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/upgraded_lti_provider_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/upload_submission_assignment_data.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/user.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/user_course.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/user_info_with_role.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/user_input.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/weak_password_exception.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/weak_password_feedback.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/webhook_base.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/webhook_configuration_disabled_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/webhook_configuration_enabled_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/work.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/work_origin.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/work_rubric_item.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/work_rubric_result_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/models/work_rubric_result_points_as_json.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/parsers.py +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/py.typed +0 -0
- {codegrade-16.1.56 → codegrade-16.1.57}/codegrade/utils.py +0 -0
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"""This module implements the ``Just`` part of the ``Maybe`` monad.
|
|
2
|
-
|
|
3
|
-
|
|
4
2
|
"""
|
|
5
3
|
import os
|
|
6
4
|
import typing as t
|
|
7
5
|
|
|
8
|
-
from ._nothing import Nothing
|
|
6
|
+
from ._nothing import Nothing, _Nothing
|
|
9
7
|
from ._type_helpers import Final, Literal
|
|
10
8
|
from ._type_helpers import SupportsLessThan as _SupportsLessThan
|
|
11
9
|
from ._type_helpers import SupportsGreaterOrEqual as _SupportsGreaterOrEqual
|
|
@@ -344,6 +342,14 @@ class Just(t.Generic[_T]):
|
|
|
344
342
|
return self.value == other.value
|
|
345
343
|
return NotImplemented
|
|
346
344
|
|
|
345
|
+
def __lt__(self, other: object) -> bool:
|
|
346
|
+
if isinstance(other, Just):
|
|
347
|
+
return self.value < other.value
|
|
348
|
+
elif isinstance(other, _Nothing):
|
|
349
|
+
return False
|
|
350
|
+
return NotImplemented
|
|
351
|
+
|
|
352
|
+
|
|
347
353
|
def ne( # pylint: disable=invalid-name
|
|
348
354
|
self: 'Just[_Y]',
|
|
349
355
|
val: _Y,
|
|
@@ -116,6 +116,14 @@ class _Nothing(t.Generic[_T]):
|
|
|
116
116
|
return True
|
|
117
117
|
return NotImplemented
|
|
118
118
|
|
|
119
|
+
def __lt__(self, other: object) -> bool:
|
|
120
|
+
if isinstance(other, _Nothing):
|
|
121
|
+
return False
|
|
122
|
+
from ._just import Just # pylint: disable=import-outside-toplevel
|
|
123
|
+
if isinstance(other, Just):
|
|
124
|
+
return True
|
|
125
|
+
return NotImplemented
|
|
126
|
+
|
|
119
127
|
def __structlog__(self) -> t.Mapping[str, object]:
|
|
120
128
|
return {'type': 'Nothing'}
|
|
121
129
|
|
|
@@ -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.57",
|
|
530
530
|
},
|
|
531
531
|
follow_redirects=True,
|
|
532
532
|
)
|
|
@@ -546,7 +546,7 @@ class AuthenticatedClient(_BaseClient):
|
|
|
546
546
|
base_url=self.base_url,
|
|
547
547
|
headers={
|
|
548
548
|
"Authorization": f"Bearer {self.token}",
|
|
549
|
-
"User-Agent": "CodeGradeAPI/16.1.
|
|
549
|
+
"User-Agent": "CodeGradeAPI/16.1.57",
|
|
550
550
|
},
|
|
551
551
|
follow_redirects=True,
|
|
552
552
|
)
|
|
@@ -13,6 +13,7 @@ from .abstract_role import AbstractRole
|
|
|
13
13
|
from .add_users_section_data import AddUsersSectionData
|
|
14
14
|
from .all_auto_test_results import AllAutoTestResults
|
|
15
15
|
from .all_site_settings import AllSiteSettings
|
|
16
|
+
from .always_update_pii_with_lti_setting import AlwaysUpdatePiiWithLtiSetting
|
|
16
17
|
from .analytics_enabled_setting import AnalyticsEnabledSetting
|
|
17
18
|
from .any_auto_test_step_as_json import AnyAutoTestStepAsJSON
|
|
18
19
|
from .any_error import AnyError
|
|
@@ -348,6 +349,7 @@ from .hide_code_editor_output_viewer_with_only_quiz_steps_setting import (
|
|
|
348
349
|
from .hide_empty_rubric_row_description_setting import (
|
|
349
350
|
HideEmptyRubricRowDescriptionSetting,
|
|
350
351
|
)
|
|
352
|
+
from .hubspot_syncing_enabled_setting import HubspotSyncingEnabledSetting
|
|
351
353
|
from .ignore_handling import IgnoreHandling
|
|
352
354
|
from .ignored_files_exception import IgnoredFilesException
|
|
353
355
|
from .import_into_assignment_data import ImportIntoAssignmentData
|
|
@@ -446,6 +448,9 @@ from .min_password_score_setting import MinPasswordScoreSetting
|
|
|
446
448
|
from .mirror_file_result import MirrorFileResult
|
|
447
449
|
from .missing_cookie_error import MissingCookieError
|
|
448
450
|
from .missing_file import MissingFile
|
|
451
|
+
from .name_and_email_from_nrps_only_setting import (
|
|
452
|
+
NameAndEmailFromNrpsOnlySetting,
|
|
453
|
+
)
|
|
449
454
|
from .new_auto_test_allowed_initial_build_ids_setting import (
|
|
450
455
|
NewAutoTestAllowedInitialBuildIdsSetting,
|
|
451
456
|
)
|
|
@@ -147,6 +147,14 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
147
147
|
#: Enabling this prevents replay attacks. If unsure, consult with the
|
|
148
148
|
#: Security Officer before disabling.
|
|
149
149
|
lti_1p3_prevent_nonce_reuse_enabled: Maybe["bool"] = Nothing
|
|
150
|
+
#: Do not store names and emails of users, but always retrieve them through
|
|
151
|
+
#: NRPS.
|
|
152
|
+
name_and_email_from_nrps_only: Maybe["bool"] = Nothing
|
|
153
|
+
#: Should we always update names and emails on LTI launches, or just when
|
|
154
|
+
#: indicated and on the first launch.
|
|
155
|
+
always_update_pii_with_lti: Maybe["bool"] = Nothing
|
|
156
|
+
#: Should we sync teachers to Hubspot.
|
|
157
|
+
hubspot_syncing_enabled: Maybe["bool"] = Nothing
|
|
150
158
|
|
|
151
159
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
152
160
|
|
|
@@ -492,6 +500,28 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
492
500
|
" Officer before disabling."
|
|
493
501
|
),
|
|
494
502
|
),
|
|
503
|
+
rqa.OptionalArgument(
|
|
504
|
+
"NAME_AND_EMAIL_FROM_NRPS_ONLY",
|
|
505
|
+
rqa.SimpleValue.bool,
|
|
506
|
+
doc=(
|
|
507
|
+
"Do not store names and emails of users, but always"
|
|
508
|
+
" retrieve them through NRPS."
|
|
509
|
+
),
|
|
510
|
+
),
|
|
511
|
+
rqa.OptionalArgument(
|
|
512
|
+
"ALWAYS_UPDATE_PII_WITH_LTI",
|
|
513
|
+
rqa.SimpleValue.bool,
|
|
514
|
+
doc=(
|
|
515
|
+
"Should we always update names and emails on LTI"
|
|
516
|
+
" launches, or just when indicated and on the first"
|
|
517
|
+
" launch."
|
|
518
|
+
),
|
|
519
|
+
),
|
|
520
|
+
rqa.OptionalArgument(
|
|
521
|
+
"HUBSPOT_SYNCING_ENABLED",
|
|
522
|
+
rqa.SimpleValue.bool,
|
|
523
|
+
doc="Should we sync teachers to Hubspot.",
|
|
524
|
+
),
|
|
495
525
|
)
|
|
496
526
|
).use_readable_describe(True)
|
|
497
527
|
)
|
|
@@ -604,6 +634,15 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
604
634
|
self.lti_1p3_prevent_nonce_reuse_enabled = maybe_from_nullable(
|
|
605
635
|
self.lti_1p3_prevent_nonce_reuse_enabled
|
|
606
636
|
)
|
|
637
|
+
self.name_and_email_from_nrps_only = maybe_from_nullable(
|
|
638
|
+
self.name_and_email_from_nrps_only
|
|
639
|
+
)
|
|
640
|
+
self.always_update_pii_with_lti = maybe_from_nullable(
|
|
641
|
+
self.always_update_pii_with_lti
|
|
642
|
+
)
|
|
643
|
+
self.hubspot_syncing_enabled = maybe_from_nullable(
|
|
644
|
+
self.hubspot_syncing_enabled
|
|
645
|
+
)
|
|
607
646
|
|
|
608
647
|
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
609
648
|
res: t.Dict[str, t.Any] = {}
|
|
@@ -1089,6 +1128,18 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
1089
1128
|
res["LTI_1P3_PREVENT_NONCE_REUSE_ENABLED"] = to_dict(
|
|
1090
1129
|
self.lti_1p3_prevent_nonce_reuse_enabled.value
|
|
1091
1130
|
)
|
|
1131
|
+
if self.name_and_email_from_nrps_only.is_just:
|
|
1132
|
+
res["NAME_AND_EMAIL_FROM_NRPS_ONLY"] = to_dict(
|
|
1133
|
+
self.name_and_email_from_nrps_only.value
|
|
1134
|
+
)
|
|
1135
|
+
if self.always_update_pii_with_lti.is_just:
|
|
1136
|
+
res["ALWAYS_UPDATE_PII_WITH_LTI"] = to_dict(
|
|
1137
|
+
self.always_update_pii_with_lti.value
|
|
1138
|
+
)
|
|
1139
|
+
if self.hubspot_syncing_enabled.is_just:
|
|
1140
|
+
res["HUBSPOT_SYNCING_ENABLED"] = to_dict(
|
|
1141
|
+
self.hubspot_syncing_enabled.value
|
|
1142
|
+
)
|
|
1092
1143
|
return res
|
|
1093
1144
|
|
|
1094
1145
|
@classmethod
|
|
@@ -1224,6 +1275,9 @@ class AllSiteSettings(FrontendSiteSettings):
|
|
|
1224
1275
|
default_course_ta_role=parsed.DEFAULT_COURSE_TA_ROLE,
|
|
1225
1276
|
lti_1p3_nonce_and_state_validation_enabled=parsed.LTI_1P3_NONCE_AND_STATE_VALIDATION_ENABLED,
|
|
1226
1277
|
lti_1p3_prevent_nonce_reuse_enabled=parsed.LTI_1P3_PREVENT_NONCE_REUSE_ENABLED,
|
|
1278
|
+
name_and_email_from_nrps_only=parsed.NAME_AND_EMAIL_FROM_NRPS_ONLY,
|
|
1279
|
+
always_update_pii_with_lti=parsed.ALWAYS_UPDATE_PII_WITH_LTI,
|
|
1280
|
+
hubspot_syncing_enabled=parsed.HUBSPOT_SYNCING_ENABLED,
|
|
1227
1281
|
)
|
|
1228
1282
|
res.raw_data = d
|
|
1229
1283
|
return res
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""The module that defines the ``AlwaysUpdatePiiWithLtiSetting`` 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 AlwaysUpdatePiiWithLtiSetting:
|
|
16
|
+
""" """
|
|
17
|
+
|
|
18
|
+
name: "t.Literal['ALWAYS_UPDATE_PII_WITH_LTI']"
|
|
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("ALWAYS_UPDATE_PII_WITH_LTI"),
|
|
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["AlwaysUpdatePiiWithLtiSetting"], d: t.Dict[str, t.Any]
|
|
48
|
+
) -> "AlwaysUpdatePiiWithLtiSetting":
|
|
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
|
|
@@ -9,16 +9,13 @@ from dataclasses import dataclass, field
|
|
|
9
9
|
import cg_request_args as rqa
|
|
10
10
|
|
|
11
11
|
from ..utils import to_dict
|
|
12
|
+
from .user_without_group import UserWithoutGroup
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
@dataclass
|
|
15
|
-
class AssignmentGrader:
|
|
16
|
+
class AssignmentGrader(UserWithoutGroup):
|
|
16
17
|
"""A grader for an assignment."""
|
|
17
18
|
|
|
18
|
-
#: The id of the grader.
|
|
19
|
-
id: "int"
|
|
20
|
-
#: The name of the grader
|
|
21
|
-
name: "str"
|
|
22
19
|
#: The division weight of the grader, if no division is setup this will be
|
|
23
20
|
#: 0.
|
|
24
21
|
weight: "float"
|
|
@@ -29,43 +26,38 @@ class AssignmentGrader:
|
|
|
29
26
|
raw_data: t.Optional[t.Dict[str, t.Any]] = field(init=False, repr=False)
|
|
30
27
|
|
|
31
28
|
data_parser: t.ClassVar = rqa.Lazy(
|
|
32
|
-
lambda:
|
|
33
|
-
rqa.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
doc="The name of the grader",
|
|
42
|
-
),
|
|
43
|
-
rqa.RequiredArgument(
|
|
44
|
-
"weight",
|
|
45
|
-
rqa.SimpleValue.float,
|
|
46
|
-
doc=(
|
|
47
|
-
"The division weight of the grader, if no division is"
|
|
48
|
-
" setup this will be 0."
|
|
29
|
+
lambda: UserWithoutGroup.data_parser.parser.combine(
|
|
30
|
+
rqa.FixedMapping(
|
|
31
|
+
rqa.RequiredArgument(
|
|
32
|
+
"weight",
|
|
33
|
+
rqa.SimpleValue.float,
|
|
34
|
+
doc=(
|
|
35
|
+
"The division weight of the grader, if no division is"
|
|
36
|
+
" setup this will be 0."
|
|
37
|
+
),
|
|
49
38
|
),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
39
|
+
rqa.RequiredArgument(
|
|
40
|
+
"done",
|
|
41
|
+
rqa.SimpleValue.bool,
|
|
42
|
+
doc=(
|
|
43
|
+
"Did this grader indicate that grading has finished?"
|
|
44
|
+
" NOTE: This field will be removed or changed in a"
|
|
45
|
+
" future release."
|
|
46
|
+
),
|
|
58
47
|
),
|
|
59
|
-
)
|
|
48
|
+
)
|
|
60
49
|
).use_readable_describe(True)
|
|
61
50
|
)
|
|
62
51
|
|
|
63
52
|
def to_dict(self) -> t.Dict[str, t.Any]:
|
|
64
53
|
res: t.Dict[str, t.Any] = {
|
|
65
|
-
"id": to_dict(self.id),
|
|
66
|
-
"name": to_dict(self.name),
|
|
67
54
|
"weight": to_dict(self.weight),
|
|
68
55
|
"done": to_dict(self.done),
|
|
56
|
+
"id": to_dict(self.id),
|
|
57
|
+
"name": to_dict(self.name),
|
|
58
|
+
"username": to_dict(self.username),
|
|
59
|
+
"is_test_student": to_dict(self.is_test_student),
|
|
60
|
+
"tenant_id": to_dict(self.tenant_id),
|
|
69
61
|
}
|
|
70
62
|
return res
|
|
71
63
|
|
|
@@ -76,10 +68,21 @@ class AssignmentGrader:
|
|
|
76
68
|
parsed = cls.data_parser.try_parse(d)
|
|
77
69
|
|
|
78
70
|
res = cls(
|
|
79
|
-
id=parsed.id,
|
|
80
|
-
name=parsed.name,
|
|
81
71
|
weight=parsed.weight,
|
|
82
72
|
done=parsed.done,
|
|
73
|
+
id=parsed.id,
|
|
74
|
+
name=parsed.name,
|
|
75
|
+
username=parsed.username,
|
|
76
|
+
is_test_student=parsed.is_test_student,
|
|
77
|
+
tenant_id=parsed.tenant_id,
|
|
83
78
|
)
|
|
84
79
|
res.raw_data = d
|
|
85
80
|
return res
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
import os
|
|
84
|
+
|
|
85
|
+
if os.getenv("CG_GENERATING_DOCS", "False").lower() in ("", "true"):
|
|
86
|
+
# fmt: off
|
|
87
|
+
pass
|
|
88
|
+
# fmt: on
|
|
@@ -25,7 +25,7 @@ class ExtendedUser(User):
|
|
|
25
25
|
|
|
26
26
|
#: The email of the user. This will only be provided for the currently
|
|
27
27
|
#: logged in user.
|
|
28
|
-
email: "str"
|
|
28
|
+
email: "t.Optional[str]"
|
|
29
29
|
#: Can this user see hidden assignments at least in one course.
|
|
30
30
|
hidden: "bool"
|
|
31
31
|
#: The payments this user did. This will only be provided for the currently
|
|
@@ -44,7 +44,7 @@ class ExtendedUser(User):
|
|
|
44
44
|
rqa.FixedMapping(
|
|
45
45
|
rqa.RequiredArgument(
|
|
46
46
|
"email",
|
|
47
|
-
rqa.SimpleValue.str,
|
|
47
|
+
rqa.Nullable(rqa.SimpleValue.str),
|
|
48
48
|
doc=(
|
|
49
49
|
"The email of the user. This will only be provided for"
|
|
50
50
|
" the currently logged in user."
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""The module that defines the ``HubspotSyncingEnabledSetting`` 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 HubspotSyncingEnabledSetting:
|
|
16
|
+
""" """
|
|
17
|
+
|
|
18
|
+
name: "t.Literal['HUBSPOT_SYNCING_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("HUBSPOT_SYNCING_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["HubspotSyncingEnabledSetting"], d: t.Dict[str, t.Any]
|
|
48
|
+
) -> "HubspotSyncingEnabledSetting":
|
|
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
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""The module that defines the ``NameAndEmailFromNrpsOnlySetting`` 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 NameAndEmailFromNrpsOnlySetting:
|
|
16
|
+
""" """
|
|
17
|
+
|
|
18
|
+
name: "t.Literal['NAME_AND_EMAIL_FROM_NRPS_ONLY']"
|
|
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("NAME_AND_EMAIL_FROM_NRPS_ONLY"),
|
|
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["NameAndEmailFromNrpsOnlySetting"], d: t.Dict[str, t.Any]
|
|
48
|
+
) -> "NameAndEmailFromNrpsOnlySetting":
|
|
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
|
|
@@ -10,6 +10,7 @@ import cg_request_args as rqa
|
|
|
10
10
|
|
|
11
11
|
from ..parsers import ParserFor, make_union
|
|
12
12
|
from ..utils import to_dict
|
|
13
|
+
from .always_update_pii_with_lti_setting import AlwaysUpdatePiiWithLtiSetting
|
|
13
14
|
from .analytics_enabled_setting import AnalyticsEnabledSetting
|
|
14
15
|
from .assignment_default_grading_scale_points_setting import (
|
|
15
16
|
AssignmentDefaultGradingScalePointsSetting,
|
|
@@ -137,6 +138,7 @@ from .hide_code_editor_output_viewer_with_only_quiz_steps_setting import (
|
|
|
137
138
|
from .hide_empty_rubric_row_description_setting import (
|
|
138
139
|
HideEmptyRubricRowDescriptionSetting,
|
|
139
140
|
)
|
|
141
|
+
from .hubspot_syncing_enabled_setting import HubspotSyncingEnabledSetting
|
|
140
142
|
from .incremental_rubric_submission_enabled_setting import (
|
|
141
143
|
IncrementalRubricSubmissionEnabledSetting,
|
|
142
144
|
)
|
|
@@ -183,6 +185,9 @@ from .max_number_of_files_setting import MaxNumberOfFilesSetting
|
|
|
183
185
|
from .max_plagiarism_matches_setting import MaxPlagiarismMatchesSetting
|
|
184
186
|
from .max_user_setting_amount_setting import MaxUserSettingAmountSetting
|
|
185
187
|
from .min_password_score_setting import MinPasswordScoreSetting
|
|
188
|
+
from .name_and_email_from_nrps_only_setting import (
|
|
189
|
+
NameAndEmailFromNrpsOnlySetting,
|
|
190
|
+
)
|
|
186
191
|
from .new_auto_test_allowed_initial_build_ids_setting import (
|
|
187
192
|
NewAutoTestAllowedInitialBuildIdsSetting,
|
|
188
193
|
)
|
|
@@ -412,6 +417,9 @@ SiteSettingInput = t.Union[
|
|
|
412
417
|
Lti1p3PreventNonceReuseEnabledSetting,
|
|
413
418
|
DefaultSubmissionPageTabSetting,
|
|
414
419
|
AnalyticsEnabledSetting,
|
|
420
|
+
NameAndEmailFromNrpsOnlySetting,
|
|
421
|
+
AlwaysUpdatePiiWithLtiSetting,
|
|
422
|
+
HubspotSyncingEnabledSetting,
|
|
415
423
|
]
|
|
416
424
|
SiteSettingInputParser = rqa.Lazy(
|
|
417
425
|
lambda: make_union(
|
|
@@ -541,5 +549,8 @@ SiteSettingInputParser = rqa.Lazy(
|
|
|
541
549
|
ParserFor.make(Lti1p3PreventNonceReuseEnabledSetting),
|
|
542
550
|
ParserFor.make(DefaultSubmissionPageTabSetting),
|
|
543
551
|
ParserFor.make(AnalyticsEnabledSetting),
|
|
552
|
+
ParserFor.make(NameAndEmailFromNrpsOnlySetting),
|
|
553
|
+
ParserFor.make(AlwaysUpdatePiiWithLtiSetting),
|
|
554
|
+
ParserFor.make(HubspotSyncingEnabledSetting),
|
|
544
555
|
),
|
|
545
556
|
)
|
|
@@ -18,8 +18,9 @@ class UserWithoutGroup:
|
|
|
18
18
|
#: The is the id of this user
|
|
19
19
|
id: "int"
|
|
20
20
|
#: The fullname of the user. This might contain a first and last name,
|
|
21
|
-
#: however this is not guaranteed.
|
|
22
|
-
|
|
21
|
+
#: however this is not guaranteed. This might be None if the PII for this
|
|
22
|
+
#: user cannot be retrieved anymore.
|
|
23
|
+
name: "t.Optional[str]"
|
|
23
24
|
#: The username of this user.
|
|
24
25
|
username: "str"
|
|
25
26
|
#: Is this user a test student.
|
|
@@ -38,10 +39,12 @@ class UserWithoutGroup:
|
|
|
38
39
|
),
|
|
39
40
|
rqa.RequiredArgument(
|
|
40
41
|
"name",
|
|
41
|
-
rqa.SimpleValue.str,
|
|
42
|
+
rqa.Nullable(rqa.SimpleValue.str),
|
|
42
43
|
doc=(
|
|
43
44
|
"The fullname of the user. This might contain a first and"
|
|
44
|
-
" last name, however this is not guaranteed."
|
|
45
|
+
" last name, however this is not guaranteed. This might be"
|
|
46
|
+
" None if the PII for this user cannot be retrieved"
|
|
47
|
+
" anymore."
|
|
45
48
|
),
|
|
46
49
|
),
|
|
47
50
|
rqa.RequiredArgument(
|
|
@@ -21,7 +21,7 @@ install_requires = \
|
|
|
21
21
|
|
|
22
22
|
setup_kwargs = {
|
|
23
23
|
'name': 'codegrade',
|
|
24
|
-
'version': '16.1.
|
|
24
|
+
'version': '16.1.57',
|
|
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
|