.gitignore
.gitmodules
.mypy.ini
.pylintrc
LICENSE
README.md
pyproject.toml
requirements-dev.txt
requirements.txt
sample-edq-lms.json
.github/workflows/main.yml
docs/development.md
edq_lms_toolkit.egg-info/PKG-INFO
edq_lms_toolkit.egg-info/SOURCES.txt
edq_lms_toolkit.egg-info/dependency_links.txt
edq_lms_toolkit.egg-info/requires.txt
edq_lms_toolkit.egg-info/top_level.txt
lms/__init__.py
lms/__main__.py
lms/py.typed
lms/backend/__init__.py
lms/backend/instance.py
lms/backend/testing.py
lms/backend/blackboard/__init__.py
lms/backend/blackboard/backend.py
lms/backend/blackboard/backend_test.py
lms/backend/blackboard/model.py
lms/backend/canvas/__init__.py
lms/backend/canvas/backend.py
lms/backend/canvas/backend_test.py
lms/backend/canvas/common.py
lms/backend/canvas/model.py
lms/backend/canvas/courses/__init__.py
lms/backend/canvas/courses/list.py
lms/backend/canvas/courses/assignments/__init__.py
lms/backend/canvas/courses/assignments/list.py
lms/backend/canvas/courses/assignments/scores/__init__.py
lms/backend/canvas/courses/assignments/scores/list.py
lms/backend/canvas/courses/assignments/scores/upload.py
lms/backend/canvas/courses/gradebook/__init__.py
lms/backend/canvas/courses/gradebook/fetch.py
lms/backend/canvas/courses/groups/__init__.py
lms/backend/canvas/courses/groups/create.py
lms/backend/canvas/courses/groups/delete.py
lms/backend/canvas/courses/groups/list.py
lms/backend/canvas/courses/groups/memberships/__init__.py
lms/backend/canvas/courses/groups/memberships/add.py
lms/backend/canvas/courses/groups/memberships/list.py
lms/backend/canvas/courses/groups/memberships/subtract.py
lms/backend/canvas/courses/groupsets/__init__.py
lms/backend/canvas/courses/groupsets/create.py
lms/backend/canvas/courses/groupsets/delete.py
lms/backend/canvas/courses/groupsets/list.py
lms/backend/canvas/courses/groupsets/memberships/__init__.py
lms/backend/canvas/courses/groupsets/memberships/list.py
lms/backend/canvas/courses/quizzes/__init__.py
lms/backend/canvas/courses/quizzes/common.py
lms/backend/canvas/courses/quizzes/download.py
lms/backend/canvas/courses/quizzes/list.py
lms/backend/canvas/courses/quizzes/remove.py
lms/backend/canvas/courses/quizzes/upload.py
lms/backend/canvas/courses/syllabus/__init__.py
lms/backend/canvas/courses/syllabus/fetch.py
lms/backend/canvas/courses/users/__init__.py
lms/backend/canvas/courses/users/list.py
lms/backend/canvas/courses/users/scores/__init__.py
lms/backend/canvas/courses/users/scores/list.py
lms/backend/moodle/__init__.py
lms/backend/moodle/backend.py
lms/backend/moodle/backend_test.py
lms/backend/testdata/backendtests/__init__.py
lms/backend/testdata/backendtests/courses/__init__.py
lms/backend/testdata/backendtests/courses/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/get_backendtest.py
lms/backend/testdata/backendtests/courses/list_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/__init__.py
lms/backend/testdata/backendtests/courses/assignments/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/get_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/list_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/__init__.py
lms/backend/testdata/backendtests/courses/assignments/scores/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/get_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/list_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/resolve_and_upload_backendtest.py
lms/backend/testdata/backendtests/courses/assignments/scores/upload_backendtest.py
lms/backend/testdata/backendtests/courses/gradebook/__init__.py
lms/backend/testdata/backendtests/courses/gradebook/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/gradebook/get_backendtest.py
lms/backend/testdata/backendtests/courses/gradebook/list_backendtest.py
lms/backend/testdata/backendtests/courses/gradebook/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/gradebook/upload_backendtest.py
lms/backend/testdata/backendtests/courses/groups/__init__.py
lms/backend/testdata/backendtests/courses/groups/create_backendtest.py
lms/backend/testdata/backendtests/courses/groups/delete_backendtest.py
lms/backend/testdata/backendtests/courses/groups/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/groups/get_backendtest.py
lms/backend/testdata/backendtests/courses/groups/list_backendtest.py
lms/backend/testdata/backendtests/courses/groups/resolve_and_create_backendtest.py
lms/backend/testdata/backendtests/courses/groups/resolve_and_delete_backendtest.py
lms/backend/testdata/backendtests/courses/groups/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/__init__.py
lms/backend/testdata/backendtests/courses/groups/memberships/add_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/list_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/resolve_and_add_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/resolve_and_set_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/resolve_and_subtract_backendtest.py
lms/backend/testdata/backendtests/courses/groups/memberships/subtract_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/__init__.py
lms/backend/testdata/backendtests/courses/groupsets/create_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/delete_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/get_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/list_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/resolve_and_create_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/resolve_and_delete_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/__init__.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/list_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/resolve_and_add_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/resolve_and_set_backendtest.py
lms/backend/testdata/backendtests/courses/groupsets/memberships/resolve_and_subtract_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/__init__.py
lms/backend/testdata/backendtests/courses/quizzes/common.py
lms/backend/testdata/backendtests/courses/quizzes/download_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/get_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/list_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/resolve_and_download_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/quizzes/resolve_and_upload_backendtest.py
lms/backend/testdata/backendtests/courses/syllabus/__init__.py
lms/backend/testdata/backendtests/courses/syllabus/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/syllabus/get_backendtest.py
lms/backend/testdata/backendtests/courses/users/__init__.py
lms/backend/testdata/backendtests/courses/users/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/users/get_backendtest.py
lms/backend/testdata/backendtests/courses/users/list_backendtest.py
lms/backend/testdata/backendtests/courses/users/resolve_and_list_backendtest.py
lms/backend/testdata/backendtests/courses/users/scores/__init__.py
lms/backend/testdata/backendtests/courses/users/scores/fetch_backendtest.py
lms/backend/testdata/backendtests/courses/users/scores/get_backendtest.py
lms/backend/testdata/backendtests/courses/users/scores/list_backendtest.py
lms/backend/testdata/backendtests/courses/users/scores/resolve_and_list_backendtest.py
lms/backend/testdata/cli/data/gradebooks/extracourse_badscore.txt
lms/backend/testdata/cli/data/gradebooks/extracourse_base.txt
lms/backend/testdata/cli/data/gradebooks/extracourse_longuser.txt
lms/backend/testdata/cli/data/gradebooks/extracourse_missing.txt
lms/backend/testdata/cli/data/gradebooks/extracourse_shortheader.txt
lms/backend/testdata/cli/data/gradebooks/extracourse_shortuser.txt
lms/backend/testdata/cli/data/groups/groupsets_add_base.txt
lms/backend/testdata/cli/data/groups/groupsets_add_noheader.txt
lms/backend/testdata/cli/data/groups/groupsets_set_base.txt
lms/backend/testdata/cli/data/groups/groupsets_set_create_delete.txt
lms/backend/testdata/cli/data/groups/groupsets_set_empty.txt
lms/backend/testdata/cli/data/groups/groupsets_set_move.txt
lms/backend/testdata/cli/data/groups/groupsets_subtract_base.txt
lms/backend/testdata/cli/data/groups/groupsets_subtract_noheader.txt
lms/backend/testdata/cli/data/scores/course101_hw0_base.txt
lms/backend/testdata/cli/data/scores/course101_hw0_comment.txt
lms/backend/testdata/cli/data/scores/course101_hw0_emptylines.txt
lms/backend/testdata/cli/data/scores/course101_hw0_emptyvalue.txt
lms/backend/testdata/cli/data/scores/course101_hw0_longline.txt
lms/backend/testdata/cli/data/scores/course101_hw0_nan.txt
lms/backend/testdata/cli/data/scores/course101_hw0_noheader.txt
lms/backend/testdata/cli/data/scores/course101_hw0_shortline.txt
lms/backend/testdata/cli/data/scores/extracourse_assignment1_base.txt
lms/backend/testdata/cli/tests/version_base.txt
lms/backend/testdata/cli/tests/courses/get_base.txt
lms/backend/testdata/cli/tests/courses/get_empty.txt
lms/backend/testdata/cli/tests/courses/get_strict_error_base.txt
lms/backend/testdata/cli/tests/courses/list_base.txt
lms/backend/testdata/cli/tests/courses/assignments/get_base.txt
lms/backend/testdata/cli/tests/courses/assignments/get_empty.txt
lms/backend/testdata/cli/tests/courses/assignments/get_nocourse.txt
lms/backend/testdata/cli/tests/courses/assignments/list_base.txt
lms/backend/testdata/cli/tests/courses/assignments/list_nocourse.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/get_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/get_empty.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/get_noassignment.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/list_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/list_noassignment.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload-score_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload-score_missassignment.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload-score_misscourse.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload-score_missuser.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload-score_strict_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_comment.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_emptylines.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_emptyvalue.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_longline.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_nan.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_noheader.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_shortline.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_course101_hw0_strict_base.txt
lms/backend/testdata/cli/tests/courses/assignments/scores/upload_extracourse_assignment1_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/get_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/get_empty.txt
lms/backend/testdata/cli/tests/courses/gradebook/get_miss.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_1_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_1_formatting_json.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_1_formatting_table.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_1_formatting_text.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_1_nocourse.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_2_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_2_formatting_table.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_3_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/list_3_formatting_table.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_badscore.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_base.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_longuser.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_missing.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_shortheader.txt
lms/backend/testdata/cli/tests/courses/gradebook/upload_extracourse_shortuser.txt
lms/backend/testdata/cli/tests/courses/groups/create_base.txt
lms/backend/testdata/cli/tests/courses/groups/delete_base.txt
lms/backend/testdata/cli/tests/courses/groups/delete_missing.txt
lms/backend/testdata/cli/tests/courses/groups/get_base.txt
lms/backend/testdata/cli/tests/courses/groups/get_empty.txt
lms/backend/testdata/cli/tests/courses/groups/get_nocourse.txt
lms/backend/testdata/cli/tests/courses/groups/list_base.txt
lms/backend/testdata/cli/tests/courses/groups/list_nocourse.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/add_base.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/add_multiple.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/add_strict_base.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/list_base.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/set_base.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/set_empty.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/set_multiple.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/subtract_base.txt
lms/backend/testdata/cli/tests/courses/groups/memeberships/subtract_multiple.txt
lms/backend/testdata/cli/tests/courses/groupsets/create_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/delete_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/delete_missing.txt
lms/backend/testdata/cli/tests/courses/groupsets/get_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/get_empty.txt
lms/backend/testdata/cli/tests/courses/groupsets/get_nocourse.txt
lms/backend/testdata/cli/tests/courses/groupsets/list_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/list_nocourse.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/add_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/add_noheader.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/list_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/set_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/set_create_delete.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/set_empty.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/set_move.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/subtract_base.txt
lms/backend/testdata/cli/tests/courses/groupsets/memeberships/subtract_noheader.txt
lms/backend/testdata/cli/tests/courses/quizzes/download_base.txt
lms/backend/testdata/cli/tests/courses/quizzes/get_base.txt
lms/backend/testdata/cli/tests/courses/quizzes/list_base.txt
lms/backend/testdata/cli/tests/courses/quizzes/remove_base.txt
lms/backend/testdata/cli/tests/courses/quizzes/upload_base.txt
lms/backend/testdata/cli/tests/courses/syllabus/get_base.txt
lms/backend/testdata/cli/tests/courses/syllabus/get_empty.txt
lms/backend/testdata/cli/tests/courses/syllabus/get_miss.txt
lms/backend/testdata/cli/tests/courses/users/get_base.txt
lms/backend/testdata/cli/tests/courses/users/get_empty.txt
lms/backend/testdata/cli/tests/courses/users/get_nocourse.txt
lms/backend/testdata/cli/tests/courses/users/list_base.txt
lms/backend/testdata/cli/tests/courses/users/list_nocourse.txt
lms/backend/testdata/cli/tests/courses/users/scores/get_base.txt
lms/backend/testdata/cli/tests/courses/users/scores/get_empty.txt
lms/backend/testdata/cli/tests/courses/users/scores/get_nouser.txt
lms/backend/testdata/cli/tests/courses/users/scores/list_base.txt
lms/backend/testdata/cli/tests/courses/users/scores/list_nouser.txt
lms/backend/testdata/cli/tests/crypto/cleartext_badauth.txt
lms/backend/testdata/cli/tests/crypto/cleartext_base.txt
lms/backend/testdata/cli/tests/crypto/secret_badauth_defaultkey.txt
lms/backend/testdata/cli/tests/crypto/secret_badauth_key.txt
lms/backend/testdata/cli/tests/crypto/secret_badkey.txt
lms/backend/testdata/cli/tests/crypto/secret_defaultkey.txt
lms/backend/testdata/cli/tests/crypto/secret_key.txt
lms/backend/testdata/cli/tests/formatting/list_empty_json.txt
lms/backend/testdata/cli/tests/formatting/list_empty_table.txt
lms/backend/testdata/cli/tests/formatting/list_empty_text.txt
lms/backend/testdata/cli/tests/formatting/list_json.txt
lms/backend/testdata/cli/tests/formatting/list_table_headers.txt
lms/backend/testdata/cli/tests/formatting/list_table_noheaders.txt
lms/backend/testdata/cli/tests/formatting/list_table_prettyheaders.txt
lms/backend/testdata/cli/tests/formatting/list_text_headers.txt
lms/backend/testdata/cli/tests/formatting/list_text_noheaders.txt
lms/backend/testdata/cli/tests/formatting/list_text_prettyheaders.txt
lms/cli/__init__.py
lms/cli/__main__.py
lms/cli/cli_test.py
lms/cli/common.py
lms/cli/parser.py
lms/cli/config/__init__.py
lms/cli/config/__main__.py
lms/cli/config/list.py
lms/cli/config/set.py
lms/cli/config/unset.py
lms/cli/courses/__init__.py
lms/cli/courses/__main__.py
lms/cli/courses/get.py
lms/cli/courses/list.py
lms/cli/courses/assignments/__init__.py
lms/cli/courses/assignments/__main__.py
lms/cli/courses/assignments/get.py
lms/cli/courses/assignments/list.py
lms/cli/courses/assignments/scores/__init__.py
lms/cli/courses/assignments/scores/__main__.py
lms/cli/courses/assignments/scores/get.py
lms/cli/courses/assignments/scores/list.py
lms/cli/courses/assignments/scores/upload-score.py
lms/cli/courses/assignments/scores/upload.py
lms/cli/courses/gradebook/__init__.py
lms/cli/courses/gradebook/__main__.py
lms/cli/courses/gradebook/get.py
lms/cli/courses/gradebook/list.py
lms/cli/courses/gradebook/upload.py
lms/cli/courses/groups/__init__.py
lms/cli/courses/groups/__main__.py
lms/cli/courses/groups/create.py
lms/cli/courses/groups/delete.py
lms/cli/courses/groups/get.py
lms/cli/courses/groups/list.py
lms/cli/courses/groups/memberships/__init__.py
lms/cli/courses/groups/memberships/__main__.py
lms/cli/courses/groups/memberships/add.py
lms/cli/courses/groups/memberships/list.py
lms/cli/courses/groups/memberships/set.py
lms/cli/courses/groups/memberships/subtract.py
lms/cli/courses/groupsets/__init__.py
lms/cli/courses/groupsets/__main__.py
lms/cli/courses/groupsets/create.py
lms/cli/courses/groupsets/delete.py
lms/cli/courses/groupsets/get.py
lms/cli/courses/groupsets/list.py
lms/cli/courses/groupsets/memberships/__init__.py
lms/cli/courses/groupsets/memberships/__main__.py
lms/cli/courses/groupsets/memberships/add.py
lms/cli/courses/groupsets/memberships/common.py
lms/cli/courses/groupsets/memberships/list.py
lms/cli/courses/groupsets/memberships/set.py
lms/cli/courses/groupsets/memberships/subtract.py
lms/cli/courses/quizzes/__init__.py
lms/cli/courses/quizzes/__main__.py
lms/cli/courses/quizzes/download.py
lms/cli/courses/quizzes/get.py
lms/cli/courses/quizzes/list.py
lms/cli/courses/quizzes/remove.py
lms/cli/courses/quizzes/upload.py
lms/cli/courses/syllabus/__init__.py
lms/cli/courses/syllabus/__main__.py
lms/cli/courses/syllabus/get.py
lms/cli/courses/users/__init__.py
lms/cli/courses/users/__main__.py
lms/cli/courses/users/get.py
lms/cli/courses/users/list.py
lms/cli/courses/users/scores/__init__.py
lms/cli/courses/users/scores/__main__.py
lms/cli/courses/users/scores/get.py
lms/cli/courses/users/scores/list.py
lms/cli/lib/__init__.py
lms/cli/lib/__main__.py
lms/cli/lib/generate-test-data.py
lms/cli/lib/verify-test-data.py
lms/cli/lib/version.py
lms/cli/server/__init__.py
lms/cli/server/__main__.py
lms/cli/server/identify.py
lms/cli/testdata/tests/help_base.txt
lms/cli/testdata/tests/version_base.txt
lms/cli/testdata/tests/config/list_base.txt
lms/cli/testdata/tests/config/set_base_project.txt
lms/cli/testdata/tests/config/unset_base_project.txt
lms/model/__init__.py
lms/model/assignments.py
lms/model/backend.py
lms/model/base.py
lms/model/base_test.py
lms/model/config.py
lms/model/constants.py
lms/model/courses.py
lms/model/groups.py
lms/model/groupsets.py
lms/model/query.py
lms/model/query_test.py
lms/model/scores.py
lms/model/users.py
lms/model/testdata/__init__.py
lms/model/testdata/assignments.py
lms/model/testdata/courses.py
lms/model/testdata/groups.py
lms/model/testdata/groupsets.py
lms/model/testdata/quizzes.py
lms/model/testdata/scores.py
lms/model/testdata/users.py
lms/testing/__init__.py
lms/testing/serverrunner.py
lms/testing/testdata.py
lms/util/__init__.py
lms/util/net.py
lms/util/parse.py
lms/util/string.py
lms/util/testing.py
scripts/build_site.sh
scripts/check_all.sh
scripts/check_lint.sh
scripts/check_python_version.sh
scripts/check_strict_types.sh
scripts/check_types.sh
scripts/gen_docs.sh
scripts/run_tests.sh
scripts/template/html/index.html
scripts/template/html/css/style.css
scripts/template/html/images/favicon.png
testdata/__init__.py
testdata/lms-blackboard-testdata/LICENSE
testdata/lms-blackboard-testdata/README.md
testdata/lms-blackboard-testdata/testdata/edq-lms.json
testdata/lms-blackboard-testdata/testdata/http/_index__GET.httpex.json
testdata/lms-blackboard-testdata/testdata/http/learn/api/public/v1/courses/_110000000_1/users%3Fexpand=user_GET.httpex.json
testdata/lms-blackboard-testdata/testdata/http/learn/api/public/v1/courses/_120000000_1/users%3Fexpand=user_GET.httpex.json
testdata/lms-blackboard-testdata/testdata/http/learn/api/public/v1/courses/_130000000_1/users%3Fexpand=user_GET.httpex.json
testdata/lms-blackboard-testdata/testdata/http/learn/api/public/v3/courses%3Favailability.available=Yes_GET.httpex.json
testdata/lms-blackboard-testdata/testdata/http/webapps/login/%3Fpassword=course-owner&user_id=course-owner_POST.httpex.json
testdata/lms-docker-canvas-testdata/.gitignore
testdata/lms-docker-canvas-testdata/.gitmodules
testdata/lms-docker-canvas-testdata/Dockerfile
testdata/lms-docker-canvas-testdata/LICENSE
testdata/lms-docker-canvas-testdata/README.md
testdata/lms-docker-canvas-testdata/requirements-dev.txt
testdata/lms-docker-canvas-testdata/requirements.txt
testdata/lms-docker-canvas-testdata/.github/workflows/main.yml
testdata/lms-docker-canvas-testdata/lms-testdata/.gitignore
testdata/lms-docker-canvas-testdata/lms-testdata/.gitmodules
testdata/lms-docker-canvas-testdata/lms-testdata/LICENSE
testdata/lms-docker-canvas-testdata/lms-testdata/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/load.py
testdata/lms-docker-canvas-testdata/lms-testdata/requirements.txt
testdata/lms-docker-canvas-testdata/lms-testdata/.github/workflows/main.yml
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/.gitignore
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/LICENSE
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/course.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/requirements.txt
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/users.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/.github/workflows/main.yml
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/assignment.ipynb
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/assignment.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/config.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/grader.py
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/local_grader.py
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/xkcd-regular-expressions.png
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/bad-style/submission.py
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/bad-style/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/not-implemented/submission.py
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/solution/submission.py
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/solution/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/quiz.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/quiz.pdf
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/backreference-matching/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/backreference-matching/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/basic-01/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/create-function/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/create-function/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/general-quantification/general-quantification-01/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/general-quantification/general-quantification-02/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/golf/golf-01/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/golf/golf-01/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/images/xkcd-regular-expressions.png
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage-search/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage-search/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/quantifiers/prompt.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/quantifiers/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/regex-01/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/terms/question.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.cpp
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.h
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/config.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/grader.cpp
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/grader.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/not-implemented/assignment.cpp
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/solution/assignment.cpp
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/solution/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/Assignment.java
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/Grader.java
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/README.md
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/assignment.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/config.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/grader.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/not-implemented/Assignment.java
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/solution/Assignment.java
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/solution/test-submission.json
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_all.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_graders.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_local_graders.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_notebook_output.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_quizzes.sh
testdata/lms-docker-canvas-testdata/lms-testdata/cse-cracks-course/scripts/check_style.sh
testdata/lms-docker-canvas-testdata/lms-testdata/testdata/assignments.json
testdata/lms-docker-canvas-testdata/lms-testdata/testdata/courses.json
testdata/lms-docker-canvas-testdata/lms-testdata/testdata/groupsets.json
testdata/lms-docker-canvas-testdata/lms-testdata/testdata/submissions.json
testdata/lms-docker-canvas-testdata/lms-testdata/testdata/users.json
testdata/lms-docker-canvas-testdata/scripts/generate-test-data.py
testdata/lms-docker-canvas-testdata/scripts/load-data.py
testdata/lms-docker-canvas-testdata/scripts/verify-test-data.py
testdata/lms-docker-canvas-testdata/testdata/edq-lms.json
testdata/lms-docker-canvas-testdata/testdata/http/_index__GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/files_api%3Ffilename=xkcd-regular-expressions_5ed6db9dedff4c9fd5778be456065f8f89dfeece7f6[text clipped f3208085]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000%3Finclude=syllabus_body_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000%3Finclude=syllabus_body_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/files%3Fname=xkcd-regular-expressions_5ed6db9dedff4c9fd5778be456065f8f89dfeece7f66be3[text clipped 01d250c6]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/group_categories%3Fname=test_groupset_1_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/group_categories%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes%3Fquiz%5Bdescription%5D=%3Cdiv+class%3D%22qg-root-block+qg-block%22%3E%0A%3Cp%3[text clipped 979b6075]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/users%3Finclude%5B%5D=enrollments&per_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B100050000%5D%5Bposted_grade%5D=1.0&grade_data%5B100050000%5D%5Btext_comment%5D=foo_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B100050000%5D%5Bposted_grade%5D=1.0_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B100050000%5D%5Bposted_grade%5D=_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B6%5D%5Bposted_grade%5D=1.0&grade_data%5B6%5D%5Btext_comment%5D=foo_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B6%5D%5Bposted_grade%5D=1.0_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/assignments/110000100/submissions/update_grades%3Fgrade_data%5B6%5D%5Bposted_grade%5D=_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/folders/by_path/quiz-composer/quizzes/Regular%20Expressions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/110000200_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/110000200/groups_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/110000200/questions%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Backreference+Matching&quiz_groups%5B%5D%5Bname%5D=Backreference+Matchin[text clipped 594a16af]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Basic+Regular+Expressions&quiz_groups%5B%5D%5Bname%5D=Basic+Regular+Expr[text clipped 6d0aa713]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=General+Quantification&quiz_groups%5B%5D%5Bname%5D=General+Quantificatio[text clipped afae4ec0]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Ice+Breaker&quiz_groups%5B%5D%5Bname%5D=Ice+Breaker&quiz_groups%5B%5D%5B[text clipped e2cd917c]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Passage&quiz_groups%5B%5D%5Bname%5D=Passage&quiz_groups%5B%5D%5Bpick_cou[text clipped 5b4ee7a2]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Passage+Search&quiz_groups%5B%5D%5Bname%5D=Passage+Search&quiz_groups%5B[text clipped 4c24673b]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Quantifiers&quiz_groups%5B%5D%5Bname%5D=Quantifiers&quiz_groups%5B%5D%5B[text clipped a3324a21]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Regex+Golf&quiz_groups%5B%5D%5Bname%5D=Regex+Golf&quiz_groups%5B%5D%5Bpi[text clipped e501db77]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Regular+Expression+Vocabulary&quiz_groups%5B%5D%5Bname%5D=Regular+Expres[text clipped acadc30a]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Regular+Expression+in+Programming+Languages&quiz_groups%5B%5D%5Bname%5D=[text clipped b8172dc9]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/groups%3Fname=Write+a+Function&quiz_groups%5B%5D%5Bname%5D=Write+a+Function&quiz_group[text clipped 44b8dc89]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=12&index=0&name=Ice+Breaker&question%5Bneutral_comments_html%5D=%3Cd[text clipped fa70e10f]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=13&index=0&name=Regular+Expression+in+Programming+Languages&question[text clipped 176fc7ea]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=14&index=0&name=Regular+Expression+Vocabulary&question%5Banswers%5D%[text clipped 58f59fe2]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=15&index=0&name=Basic+Regular+Expressions&question%5Banswers%5D%5B0%[text clipped cd21588b]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=16&index=0&name=Passage&question%5Bpoints_possible%5D=1&question%5Bp[text clipped d7623bda]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=17&index=0&name=Passage+Search&question%5Banswers%5D%5B0%5D%5Banswer[text clipped f31e295a]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=18&index=0&name=Quantifiers&question%5Banswers%5D%5B0%5D%5Banswer_te[text clipped 63402759]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=19&index=0&name=General+Quantification+-+Question+A&question%5Banswe[text clipped b33e1621]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=19&index=1&name=General+Quantification+-+Question+B&question%5Banswe[text clipped e63296c1]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=20&index=0&name=Backreference+Matching&question%5Banswers%5D%5B0%5D%[text clipped 36c220af]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=21&index=0&name=Regex+Golf&question%5Banswers%5D%5B0%5D%5Banswer_tex[text clipped 40943d84]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/quizzes/2/questions%3Fgroup_id=22&index=0&name=Write+a+Function&question%5Bpoints_possible%5D=1&que[text clipped e76a6993]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/students/submissions%3Fper_page=95&student_ids%5B%5D=all_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/110000000/students/submissions%3Fstudent_ids%5B%5D=100050000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/assignments%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/group_categories%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/users%3Finclude%5B%5D=enrollments&per_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/assignments/120000100/submissions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/students/submissions%3Fper_page=95&student_ids%5B%5D=all_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/120000000/students/submissions%3Fstudent_ids%5B%5D=100050000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/group_categories%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/users%3Finclude%5B%5D=enrollments&per_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000100/submissions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000100/submissions/update_grades%3Fgrade_data%5B100060000%5D%5Bposted_grade%5D=1.0&grade_data%5B100070000%5D%5Bp[text clipped e99aa934]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000100/submissions/update_grades%3Fgrade_data%5B100060000%5D%5Bposted_grade%5D=1.0&grade_data%5B100070000%5D%5Bposted_grade%5D=0.5_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000100/submissions/update_grades%3Fgrade_data%5B100070000%5D%5Bposted_grade%5D=0.5_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000200/submissions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000200/submissions/update_grades%3Fgrade_data%5B100060000%5D%5Bposted_grade%5D=1.0&grade_data%5B100060000%5D%5Bt[text clipped 87806df0]_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000200/submissions/update_grades%3Fgrade_data%5B100060000%5D%5Bposted_grade%5D=1.0&grade_data%5B100070000%5D%5Bposted_grade%5D=0.5_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000200/submissions/update_grades%3Fgrade_data%5B100060000%5D%5Bposted_grade%5D=1.0_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/assignments/130000300/submissions_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/students/submissions%3Fper_page=95&student_ids%5B%5D=all_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/students/submissions%3Fstudent_ids%5B%5D=100060000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/students/submissions%3Fstudent_ids%5B%5D=100070000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/students/submissions%3Fstudent_ids%5B%5D=100080000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/courses/130000000/students/submissions%3Fstudent_ids%5B%5D=100090000_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/files/3/create_success%3Fuuid=b78627db8049e8261f7a5dfebc7d7b3c0ece6b8b8b312b4ae1a00c9eeb30898d_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/export_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/groups%3Fname=test_group_1_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/groups%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/import%3Ffile-attachment=670cfa66150f435c6104858acd6f5b05680cb3820e0710d050a18bf3c8ddb3fa_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/import%3Ffile-attachment=75bfda862345629ab5f7dfc17e6e3ea7751805b2c646111f4ec5d49cae547ae5_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/import%3Ffile-attachment=7e56d92ac06c9df60167fb01f50ff1980d98f889dad7b42d9c0c370054df7b24_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131010100/import%3Ffile-attachment=83ef3ceca1acdaa14bd00f6388b6e264e608eed46dc92a0672573fab1b0b2a58_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131020200/export_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131020200/groups%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131030300/export_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131030300/groups%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131030300/import%3Ffile-attachment=3181f844c06de02129ff1839e31015102bcf9dd13fa734fc621eca95cd004198_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/group_categories/131030300/import%3Ffile-attachment=f501233fa015c5d8e985ead552ffc96692803adafef1ed91e6afb40e9c2e80eb_POST.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010101_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010102_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010101/users%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010101/users%3Fuser_ids%5B%5D=%5B%27100060000%27%2C+%27100070000%27%5D_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010101/users%3Fuser_ids%5B%5D=100060000_DELETE.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131010102/users%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131020201/users%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131020202/users%3Fper_page=95_GET.httpex.json
testdata/lms-docker-canvas-testdata/testdata/http/api/v1/groups/131030301/users%3Fper_page=95_GET.httpex.json
testdata/lms-docker-moodle-testdata/.gitignore
testdata/lms-docker-moodle-testdata/.gitmodules
testdata/lms-docker-moodle-testdata/Dockerfile
testdata/lms-docker-moodle-testdata/LICENSE
testdata/lms-docker-moodle-testdata/README.md
testdata/lms-docker-moodle-testdata/requirements-dev.txt
testdata/lms-docker-moodle-testdata/requirements.txt
testdata/lms-docker-moodle-testdata/.github/workflows/main.yml
testdata/lms-docker-moodle-testdata/lms-testdata/.gitignore
testdata/lms-docker-moodle-testdata/lms-testdata/.gitmodules
testdata/lms-docker-moodle-testdata/lms-testdata/LICENSE
testdata/lms-docker-moodle-testdata/lms-testdata/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/load.py
testdata/lms-docker-moodle-testdata/lms-testdata/requirements.txt
testdata/lms-docker-moodle-testdata/lms-testdata/.github/workflows/main.yml
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/.gitignore
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/LICENSE
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/course.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/requirements.txt
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/users.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/.github/workflows/main.yml
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/assignment.ipynb
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/assignment.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/config.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/grader.py
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/local_grader.py
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/xkcd-regular-expressions.png
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/bad-style/submission.py
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/bad-style/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/not-implemented/submission.py
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/solution/submission.py
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/assignments/regex/test-submissions/solution/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/quiz.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/quiz.pdf
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/backreference-matching/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/backreference-matching/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/basic-01/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/create-function/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/create-function/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/general-quantification/general-quantification-01/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/general-quantification/general-quantification-02/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/golf/golf-01/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/golf/golf-01/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/ice-breaker/images/xkcd-regular-expressions.png
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage-search/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/passage-search/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/quantifiers/prompt.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/quantifiers/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/regex-01/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/quizzes/regex/questions/terms/question.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.cpp
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.h
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/assignment.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/config.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/grader.cpp
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/grader.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/not-implemented/assignment.cpp
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/solution/assignment.cpp
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/cpp-simple/test-submissions/solution/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/Assignment.java
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/Grader.java
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/README.md
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/assignment.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/config.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/grader.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/not-implemented/Assignment.java
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/not-implemented/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/solution/Assignment.java
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/sample-assignments/java-simple/test-submissions/solution/test-submission.json
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_all.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_graders.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_local_graders.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_notebook_output.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_quizzes.sh
testdata/lms-docker-moodle-testdata/lms-testdata/cse-cracks-course/scripts/check_style.sh
testdata/lms-docker-moodle-testdata/lms-testdata/testdata/assignments.json
testdata/lms-docker-moodle-testdata/lms-testdata/testdata/courses.json
testdata/lms-docker-moodle-testdata/lms-testdata/testdata/groupsets.json
testdata/lms-docker-moodle-testdata/lms-testdata/testdata/submissions.json
testdata/lms-docker-moodle-testdata/lms-testdata/testdata/users.json
testdata/lms-docker-moodle-testdata/scripts/generate-test-data.py
testdata/lms-docker-moodle-testdata/scripts/load-data.py
testdata/lms-docker-moodle-testdata/scripts/verify-test-data.py
testdata/lms-docker-moodle-testdata/testdata/edq-lms.json
testdata/lms-docker-moodle-testdata/testdata/http/_index__GET.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/login/index.php%3Fpassword=ZZZ&username=course-owner_POST.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/login/index.php%3Fpassword=course-owner&username=course-owner_POST.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/login/index.php_GET.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/user/index.php%3Fid=110000000&perpage=5000_GET.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/user/index.php%3Fid=120000000&perpage=5000_GET.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/user/index.php%3Fid=130000000&perpage=5000_GET.httpex.json
testdata/lms-docker-moodle-testdata/testdata/http/user/profile.php_GET.httpex.json