Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 4 additions & 14 deletions examples/matplotlib_exercices.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,8 @@
"metadata": {
"deletable": true,
"editable": true,
"evaluation_criteria": [
"Typo Correction: Correct 'np.linsapce' typo to 'np.linspace'.",
"Plot Output: Ensure the Sine and Cosine waves plot is correctly rendered without runtime errors."
],
"evaluation_criteria": "Typo Correction: Correct 'np.linsapce' typo to 'np.linspace'.\nPlot Output: Ensure the Sine and Cosine waves plot is correctly rendered without runtime errors."
,
"reference_solution": "vzcbeg zngcybgyvo.clcybg nf cyg\nvzcbeg ahzcl nf ac\nk = ac.yvafcnpr(0, 2 * ac.cv, 100)\nsvt, nk = cyg.fhocybgf(svtfvmr=(8, 4))\nnk.cybg(k, ac.fva(k), ynory='fva(k)', pbybe='eblnyoyhr')\nnk.cybg(k, ac.pbf(k), ynory='pbf(k)', pbybe='gbzngb', yvarfglyr='--')\nnk.frg_gvgyr('Fvar naq Pbfvar Jnirf')\nnk.frg_kynory('k')\nnk.frg_lynory('l')\nnk.yrtraq()\nnk.tevq(Gehr, nycun=0.3)\ncyg.gvtug_ynlbhg()\ncyg.fubj()",
"slideshow": {
"slide_type": ""
Expand Down Expand Up @@ -101,11 +99,7 @@
"metadata": {
"deletable": true,
"editable": true,
"evaluation_criteria": [
"Bar chart creation: Uses ax.bar with categories and values.",
"Aesthetics & Colors: Applies a different color to each bar.",
"Value Labels: Correctly loops over the bars to add text scores above each bar."
],
"evaluation_criteria": "Bar chart creation: Uses ax.bar with categories and values.\nAesthetics & Colors: Applies a different color to each bar.\nValue Labels: Correctly loops over the bars to add text scores above each bar.",
"reference_solution": "pngrtbevrf = ['Clguba', 'WninFpevcg', 'Ehfg', 'Tb', 'Whyvn']\ninyhrf = [85, 72, 58, 45, 30]\nsvt, nk = cyg.fhocybgf(svtfvmr=(8, 4))\npbybef = ['eblnyoyhr', 'gbzngb', 'zrqvhzfrnterra', 'benatr', 'zrqvhzchecyr']\nonef = nk.one(pngrtbevrf, inyhrf, pbybe=pbybef)\nnk.frg_gvgyr('Cebtenzzvat Ynathntr Fpberf')\nnk.frg_lynory('Fpber')\nsbe one va onef:\n liny = one.trg_urvtug()\n nk.grkg(one.trg_k() + one.trg_jvqgu()/2.0, liny + 1, fge(liny), un='pragre', in='obggbz')\ncyg.gvtug_ynlbhg()\ncyg.fubj()",
"slideshow": {
"slide_type": ""
Expand Down Expand Up @@ -163,11 +157,7 @@
"metadata": {
"deletable": true,
"editable": true,
"evaluation_criteria": [
"Random data seed: Fails to set random seed 42, generating incorrect data coordinates.",
"Colorbar & Labels: Missing colorbar, title, grid, or x/y labels on the axes.",
"Scatter aesthetic parameters: Fails to set alpha=0.6, colormap='viridis', size mapping, or color mapping."
],
"evaluation_criteria": "Random data seed: Fails to set random seed 42, generating incorrect data coordinates.\nColorbar & Labels: Missing colorbar, title, grid, or x/y labels on the axes.\nScatter aesthetic parameters: Fails to set alpha=0.6, colormap='viridis', size mapping, or color mapping.",
"reference_solution": "ac.enaqbz.frrq(42)\na = 150\nk = ac.enaqbz.enaqa(a)\nl = ac.enaqbz.enaqa(a)\nfvmrf = ac.enaqbz.havsbez(20, 200, a)\npbybef = ac.enaqbz.enaq(a)\nsvt, nk = cyg.fhocybgf(svtfvmr=(8, 6))\nfpnggre = nk.fpnggre(k, l, p=pbybef, f=fvmrf, pznc='ivevqvf', nycun=0.6)\ncyg.pbybeone(fpnggre, nk=nk, ynory='Pbybe inyhr')\nnk.frg_gvgyr('Enaqbz Fpnggre Cybg')\nnk.frg_kynory('K inyhrf')\nnk.frg_lynory('L inyhrf')\nnk.tevq(Gehr, nycun=0.3)\ncyg.gvtug_ynlbhg()\ncyg.fubj()",
"slideshow": {
"slide_type": ""
Expand Down
11 changes: 6 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { infoIcon } from '@jupyterlab/ui-components';

import { clearItem, stopItem } from './components';
import { TUTOR_USER, TutorChatModel } from './model';
import { decodeRot13, formatEvaluationCriteria, isContinuous } from './utils';
import { decodeRot13, isContinuous } from './utils';

const INFO_ICON_BASE_64 = btoa(infoIcon.svgstr);

Expand Down Expand Up @@ -281,9 +281,10 @@ const plugin: JupyterFrontEndPlugin<void> = {
const referenceSolution =
typeof rawSolution === 'string' ? decodeRot13(rawSolution) : '';

// Retrieve and format evaluation_criteria from metadata
const rawCriteria = cell.model.getMetadata('evaluation_criteria');
const evaluationCriteria = formatEvaluationCriteria(rawCriteria);
// Retrieve evaluation_criteria from metadata
const evaluationCriteria = cell.model.getMetadata(
'evaluation_criteria'
);

const question = errorSection
? 'Explain code and error'
Expand All @@ -299,7 +300,7 @@ const plugin: JupyterFrontEndPlugin<void> = {
if (referenceSolution) {
formattedBody += `\n\n<reference_solution>\n${referenceSolution}\n</reference_solution>`;
}
if (evaluationCriteria) {
if (evaluationCriteria && typeof evaluationCriteria === 'string') {
formattedBody += `\n\n<evaluation_criteria>\n${evaluationCriteria}\n</evaluation_criteria>`;
}

Expand Down
16 changes: 0 additions & 16 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,3 @@ export function decodeRot13(str: string): string {
return String.fromCharCode(((c.charCodeAt(0) - base + 13) % 26) + base);
});
}

export function formatEvaluationCriteria(criteriaData: unknown): string {
if (!criteriaData) {
return '';
}
if (typeof criteriaData === 'string') {
return criteriaData;
}
if (Array.isArray(criteriaData)) {
return criteriaData
.map(item => (typeof item === 'string' ? `- ${item.trim()}` : ''))
.filter(Boolean)
.join('\n');
}
return '';
}
Loading