You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow choosing custom versions of python for graders (#92)
## Motivation
* Sets us up for supporting Java (notably this DOES NOT add official
Java support)
* Allows us to offer higher versions of python, without breaking
backwards compatibility with graders relying on python 3.10 behavior
This PR also does not add a warning banner if an assignment is using a
deprecated version of a language, in order to reduce the already large
and complex diff. This would be better as a "good first issue".
## Implementation
This adds a new model, `Language`, which stores information about the
language, binary path, and more. The field `Assignment.language` has
been moved inside said model. All the information about the specific
language is stored in a dictionary called `info`.
The `info` dictionary must contain a `version` key that is sortable. For
the `python` grader language, it must also contain the key `python3`
which has the absolute path to a python executable.
The addition of another language to Tin can then consist of simply
adding other keys to the `info` dictionary as needed.
> [!IMPORTANT]
> Custom migrations were written in order to facilitate this transition
with minimal problems.
The rest is just some restructuring:
* Changes the `run_submission` task to use the assignments executable
* Filters the edit assignment/create venv to only show non-deprecated
language options.
* Changes the `create_venv` task to use the correct executable
0 commit comments