.gitignore
.python-version
README.md
pyproject.toml
.circleci/config.yml
.github/CODEOWNERS
pyodide_backend/__init__.py
pyodide_backend/display_hook.py
pyodide_backend/exercise.py
pyodide_backend/interactive_shell.py
pyodide_backend/matplotlib_custom_backend.py
pyodide_backend/matplotlib_plots.py
pyodide_backend/process.py
pyodide_backend/task.py
pyodide_backend/version.py
pyodide_backend.egg-info/PKG-INFO
pyodide_backend.egg-info/SOURCES.txt
pyodide_backend.egg-info/dependency_links.txt
pyodide_backend.egg-info/requires.txt
pyodide_backend.egg-info/top_level.txt
tests/__init__.py
tests/test_prod_courses.py
tests/test_pyodide_exercise.py
tests/fixtures/__init__.py
tests/fixtures/get_course_exercises.py
tests/snapshots/test_prod_courses/test_intermediate_python/04cd43e0f2_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/04cd43e0f2_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/0a0e9ba435_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/0a0e9ba435_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1911e03b88_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1911e03b88_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1c9335a8ac_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1c9335a8ac_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1f075b9f03_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/1f075b9f03_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/23317040f9_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/23317040f9_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/24303a46bd_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/24303a46bd_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/2aeb7a450e_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/2aeb7a450e_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/3f7ec57dda_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/3f7ec57dda_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/450be65912_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/450be65912_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/4c5e5e0a8f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/4c5e5e0a8f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/4e029169d2_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/4e029169d2_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/532155cd37_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/532155cd37_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5739eaee8f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5739eaee8f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/58bf50bfca_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/58bf50bfca_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/58c46ab079_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/58c46ab079_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5a5e2de1a1_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5a5e2de1a1_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5c059fb94f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5c059fb94f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5cd8886454_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/5cd8886454_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6048cbed18_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6048cbed18_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6180ea1a99_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6180ea1a99_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/697b737290_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/697b737290_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6afd9740bb_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6afd9740bb_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6b262ab724_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6b262ab724_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6ed7a45685_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/6ed7a45685_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/7281c7a057_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/7281c7a057_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/759e8a403f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/759e8a403f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/830ff9cb1d_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/830ff9cb1d_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/84efa4277e_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/84efa4277e_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/883d74c4ca_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/883d74c4ca_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/896519cdaa_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/896519cdaa_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/8b9fa03c1f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/8b9fa03c1f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/8d7faf58dc_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/8d7faf58dc_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/90b213e819_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/90b213e819_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/953ad6a95d_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/953ad6a95d_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/_exercises.json
tests/snapshots/test_prod_courses/test_intermediate_python/a31c388208_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/a31c388208_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ab38b6ea69_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ab38b6ea69_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b0fd26d4e3_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b0fd26d4e3_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b376a92c55_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b376a92c55_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b67a5ea0d3_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b67a5ea0d3_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b6a29cb95f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b6a29cb95f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b8184c74b1_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/b8184c74b1_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ba24be46f5_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ba24be46f5_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/bbbe86ee6f_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/bbbe86ee6f_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/bd57d4ff35_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/bd57d4ff35_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c02da50333_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c02da50333_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c1152771dd_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c1152771dd_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c3a959fe62_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c3a959fe62_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c7e81d4473_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c7e81d4473_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c7fde6eec2_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/c7fde6eec2_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ccc3dcd033_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ccc3dcd033_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/d29db94400_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/d29db94400_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/d9b95fb7f9_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/d9b95fb7f9_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/da45185854_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/da45185854_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/e11cc0f7ef_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/e11cc0f7ef_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/e23a209115_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/e23a209115_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ebd108c1f9_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ebd108c1f9_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f1abea987c_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f1abea987c_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f5cc571625_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f5cc571625_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f80dd59757_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/f80dd59757_submit_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ffec468300_code_result.json
tests/snapshots/test_prod_courses/test_intermediate_python/ffec468300_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/006b48561f_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/006b48561f_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/0dbe8ed695_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/0dbe8ed695_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/0f7c039428_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/0f7c039428_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1702a8bcdc_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1702a8bcdc_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1c2378b677_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1c2378b677_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1fbeab82d0_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/1fbeab82d0_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4039302ee0_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4039302ee0_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4409948807_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4409948807_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4bf65ad83e_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4bf65ad83e_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4e1bba1b55_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/4e1bba1b55_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/509c588eb6_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/509c588eb6_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/5cb045bb13_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/5cb045bb13_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/5df25d0b7b_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/5df25d0b7b_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/7432a6376f_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/7432a6376f_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/7f08642d18_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/7f08642d18_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/84cab9d170_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/84cab9d170_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/85f792356e_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/85f792356e_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/9158c577b0_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/9158c577b0_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/_exercises.json
tests/snapshots/test_prod_courses/test_intro_to_python/aeca4977f0_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/aeca4977f0_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/af72db9915_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/af72db9915_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/bdc52f0e19_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/bdc52f0e19_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/c3ce582e32_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/c3ce582e32_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/c422ee929b_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/c422ee929b_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/dbbbd306cf_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/dbbbd306cf_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e30486d7c1_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e30486d7c1_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e6c527bf41_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e6c527bf41_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e7e25a89ea_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/e7e25a89ea_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/f4e91c4ae9_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/f4e91c4ae9_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/f54fbf9bd9_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/f54fbf9bd9_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/fcb2a9007b_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/fcb2a9007b_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/fe65eff50a_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/fe65eff50a_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/ff06cedeb4_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/ff06cedeb4_submit_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/ff0fe8d967_code_result.json
tests/snapshots/test_prod_courses/test_intro_to_python/ff0fe8d967_submit_result.json