{"id":15020262,"url":"https://github.com/ucbds-infra/otter-grader","last_synced_at":"2025-10-08T13:41:40.220Z","repository":{"id":39121711,"uuid":"208363438","full_name":"ucbds-infra/otter-grader","owner":"ucbds-infra","description":"A Python and R autograding solution","archived":false,"fork":false,"pushed_at":"2025-05-01T04:25:27.000Z","size":51981,"stargazers_count":138,"open_issues_count":16,"forks_count":70,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-01T05:25:03.627Z","etag":null,"topics":["autograder","autograding","jupyter","jupyter-notebook","jupyter-notebooks","python","r","rmd"],"latest_commit_sha":null,"homepage":"https://otter-grader.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ucbds-infra.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-09-13T23:40:57.000Z","updated_at":"2025-05-01T04:25:29.000Z","dependencies_parsed_at":"2023-10-17T05:51:48.342Z","dependency_job_id":"b653324a-75a3-48ec-a3ea-fd544d9c2631","html_url":"https://github.com/ucbds-infra/otter-grader","commit_stats":{"total_commits":2949,"total_committers":41,"mean_commits":71.92682926829268,"dds":"0.14343845371312314","last_synced_commit":"3f4e98990750083e4e52a840862f79354c74e7c2"},"previous_names":[],"tags_count":105,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucbds-infra%2Fotter-grader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucbds-infra%2Fotter-grader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucbds-infra%2Fotter-grader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ucbds-infra%2Fotter-grader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ucbds-infra","download_url":"https://codeload.github.com/ucbds-infra/otter-grader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337612,"owners_count":22054253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autograder","autograding","jupyter","jupyter-notebook","jupyter-notebooks","python","r","rmd"],"created_at":"2024-09-24T19:54:49.265Z","updated_at":"2025-10-08T13:41:40.197Z","avatar_url":"https://github.com/ucbds-infra.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Otter-Grader\n\n[![PyPI](https://img.shields.io/pypi/v/otter-grader.svg)](https://pypi.org/project/otter-grader/)\n[![DOI](https://zenodo.org/badge/208363438.svg)](https://zenodo.org/badge/latestdoi/208363438)\n[![Run tests](https://github.com/ucbds-infra/otter-grader/actions/workflows/run-tests.yml/badge.svg)](https://github.com/ucbds-infra/otter-grader/actions/workflows/run-tests.yml)\n[![Coverage Status](https://coveralls.io/repos/github/ucbds-infra/otter-grader/badge.svg?branch=master)](https://coveralls.io/github/ucbds-infra/otter-grader?branch=master)\n[![Documentation Status](https://readthedocs.org/projects/otter-grader/badge/?version=latest)](https://otter-grader.readthedocs.io/en/latest/?badge=latest)\n[![Slack](https://img.shields.io/endpoint?logo=slack\u0026url=https%3A%2F%2Fraw.githubusercontent.com%2Fucbds-infra%2Fotter-grader%2Fmaster%2Fslack-shields.json)](https://join.slack.com/t/otter-grader/shared_invite/zt-3drxla0ox-IWYIREOYmKhwL1XTyGQE4Q)\n\nOtter Grader is a light-weight, modular open-source autograder developed by the Data Science \nEducation Program at UC Berkeley. It is designed to work with classes at any scale by abstracting \naway the autograding internals in a way that is compatible with any instructor's assignment \ndistribution and collection pipeline. Otter supports local grading through parallel Docker \ncontainers, grading using the autograder platforms of 3rd party learning management systems (LMSs), \nthe deployment of an Otter-managed grading virtual machine, and a client package that allows \nstudents to run public checks on their own machines. Otter is designed to grade Python scripts and \nJupyter Notebooks, and is compatible with a few different LMSs, including Canvas and Gradescope.\n\n## Documentation\n\nThe documentation for Otter can be found [here](https://otter-grader.rtfd.io).\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## Changelog\n\nSee [`CHANGELOG.md`](CHANGELOG.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucbds-infra%2Fotter-grader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fucbds-infra%2Fotter-grader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucbds-infra%2Fotter-grader/lists"}