{
  "_id": "6aaa581aea78b3e62eacb47c",
  "Type": "Package",
  "Package": "gradethis",
  "Title": "Automated Feedback for Student Exercises in 'learnr' Tutorials",
  "Version": "0.2.14",
  "Authors@R": "c(\nperson(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-7111-0077\")),\nperson(\"Daniel\", \"Chen\", , \"daniel.chen@posit.co\", role = \"aut\",\ncomment = c(ORCID = \"0000-0003-3857-1741\")),\nperson(\"Garrett\", \"Grolemund\", , \"garrett@posit.co\", role = c(\"ccp\", \"aut\"),\ncomment = c(ORCID = \"0000-0002-7765-6011\")),\nperson(\"Alexander\", \"Rossell Hayes\", , \"alex.rossellhayes@posit.co\", role = \"aut\",\ncomment = c(ORCID = \"0000-0001-9412-0457\")),\nperson(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\",\ncomment = c(ORCID = \"0000-0001-9986-114X\")),\nperson(, \"Posit, PBC\", role = c(\"cph\", \"fnd\"))\n)",
  "Description": "Pairing with the 'learnr' R package, 'gradethis' provides\nmultiple methods to grade 'learnr' exercises.  To learn more\nabout 'learnr' tutorials, please visit\n<https://rstudio.github.io/learnr/>.",
  "License": "MIT + file LICENSE",
  "URL": "https://pkgs.rstudio.com/gradethis/,\nhttps://rstudio.github.io/learnr/,\nhttps://github.com/rstudio/gradethis",
  "BugReports": "https://github.com/rstudio/gradethis/issues",
  "VignetteBuilder": "knitr",
  "Remotes": [
    "rstudio/ggcheck",
    "rstudio/learnr"
  ],
  "Config/Needs/connect": "rsconnect",
  "Config/Needs/coverage": "covr",
  "Config/Needs/website": "pkgdown, tidyverse/tidytemplate",
  "Config/roxygen2/version": "8.0.0",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "Roxygen": "list(markdown = TRUE)",
  "Config/pak/sysreqs": "cmake make libuv1-dev zlib1g-dev",
  "Repository": "https://rstudio.r-universe.dev",
  "Date/Publication": "2026-06-18 17:19:36 UTC",
  "RemoteUrl": "https://github.com/rstudio/gradethis",
  "RemoteRef": "HEAD",
  "RemoteSha": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-09-16 08:44:45 UTC",
    "User": "root"
  },
  "Author": "Garrick Aden-Buie [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-7111-0077>),\nDaniel Chen [aut] (ORCID: <https://orcid.org/0000-0003-3857-1741>),\nGarrett Grolemund [ccp, aut] (ORCID:\n<https://orcid.org/0000-0002-7765-6011>),\nAlexander Rossell Hayes [aut] (ORCID:\n<https://orcid.org/0000-0001-9412-0457>),\nBarret Schloerke [aut] (ORCID: <https://orcid.org/0000-0001-9986-114X>),\nPosit, PBC [cph, fnd]",
  "Maintainer": "Garrick Aden-Buie <garrick@posit.co>",
  "_user": "rstudio",
  "_type": "src",
  "_file": "gradethis_0.2.14.tar.gz",
  "_fileid": "https://r2.ropensci.org/f561ee9ca440d0a0bd5b1baec2f62537e3aac23986d6f04e95854db604e8c801",
  "_filesize": 515905,
  "_sha256": "f561ee9ca440d0a0bd5b1baec2f62537e3aac23986d6f04e95854db604e8c801",
  "_expires": "2026-12-25T08:49:28.000Z",
  "_created": "2026-09-16T08:44:45.000Z",
  "_published": "2026-09-16T08:49:30.519Z",
  "_jobs": [
    {
      "job": 104726879406,
      "time": 208,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "10438500572"
    },
    {
      "job": 104726879418,
      "time": 220,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10438390865"
    },
    {
      "job": 104726879446,
      "time": 113,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "10438475500"
    },
    {
      "job": 104726879428,
      "time": 150,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10438162678"
    },
    {
      "job": 104725544450,
      "time": 259,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10437798211"
    },
    {
      "job": 104726879492,
      "time": 150,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "10438087692"
    },
    {
      "job": 104726879467,
      "time": 171,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "10438057759"
    },
    {
      "job": 104726879478,
      "time": 162,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "10437703951"
    },
    {
      "job": 104726879539,
      "time": 163,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "10438426245"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486",
  "_status": "success",
  "_upstream": "https://github.com/rstudio/gradethis",
  "_commit": {
    "id": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
    "author": "Garrick Aden-Buie <garrick@adenbuie.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "fix: resolve R CMD check test failures (#370)\n\n* fix: resolve R CMD check test failures (issue #368)\n\nFour root causes addressed:\n\n- `local_mock()` defunct in testthat >= 3.2.0; replace with\n  `local_mocked_bindings()` in test-graded.R\n\n- `expect_true()` error message format changed from \"is not TRUE\" to\n  \"to be TRUE\"; update test-graded.R assertion to match\n\n- `expect_type()` error now formats as multi-line HTML output; update\n  regex in test-code_feedback.R to use `[\\s\\S]` cross-line match\n  with `perl = TRUE`\n\n- ggplot2 4.0 changed `geom_point()` closure environment from the\n  package namespace to a child env; use `topenv(environment(fn))`\n  in `is_ggplot2_function()` so colour/color standardisation works\n\nFixes #368\n\n* test: update graded snapshots for new rlang warning format\n\nrlang now formats warnings as `Condition\\n  Warning in \\`fn()\\`:` rather\nthan `Warning <simpleWarning>`. Accept the new snapshot output.\n\n* Tidy Description (GitHub Actions)\n\n---------\n\nCo-authored-by: gadenbuie <gadenbuie@users.noreply.github.com>",
    "time": 1781803176
  },
  "_maintainer": {
    "name": "Garrick Aden-Buie",
    "email": "garrick@posit.co",
    "login": "gadenbuie",
    "mastodon": "@grrrck@fosstodon.org",
    "bluesky": "@grrrck.xyz",
    "description": "Software engineer for Shiny at @posit-pbc",
    "uuid": 5420529,
    "orcid": "0000-0002-7111-0077"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.2.0",
      "role": "Depends"
    },
    {
      "package": "checkmate",
      "role": "Imports"
    },
    {
      "package": "commonmark",
      "role": "Imports"
    },
    {
      "package": "ellipsis",
      "role": "Imports"
    },
    {
      "package": "glue",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "learnr",
      "version": ">= 0.10.1.9008",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "rstudioapi",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "waldo",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "DBI",
      "role": "Suggests"
    },
    {
      "package": "ggcheck",
      "version": ">= 0.0.5",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "rstudio",
  "_selfowned": true,
  "_usedby": 6,
  "_updates": [
    {
      "week": "2026-25",
      "n": 4
    }
  ],
  "_tags": [],
  "_stars": 164,
  "_contributors": [
    {
      "user": "gadenbuie",
      "count": 122,
      "uuid": 5420529
    },
    {
      "user": "garrettgman",
      "count": 114,
      "uuid": 85014
    },
    {
      "user": "rossellhayes",
      "count": 36,
      "uuid": 44556601
    },
    {
      "user": "cpsievert",
      "count": 29,
      "uuid": 1365941
    },
    {
      "user": "chendaniely",
      "count": 29,
      "uuid": 5782147
    },
    {
      "user": "schloerke",
      "count": 12,
      "uuid": 93231
    },
    {
      "user": "vincentguyader",
      "count": 8,
      "uuid": 10470699
    },
    {
      "user": "trestletech",
      "count": 3,
      "uuid": 1593639
    },
    {
      "user": "angela-li",
      "count": 1,
      "uuid": 15808896
    },
    {
      "user": "colinfay",
      "count": 1,
      "uuid": 17936236
    },
    {
      "user": "laura-puckett",
      "count": 1,
      "uuid": 36464703
    },
    {
      "user": "mine-cetinkaya-rundel",
      "count": 1,
      "uuid": 5965649
    },
    {
      "user": "nischalshrestha",
      "count": 1,
      "uuid": 9612286
    }
  ],
  "_userbio": {
    "uuid": 513560,
    "type": "organization",
    "name": "RStudio",
    "followers": 3577
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/gradethis"
  },
  "_devurl": "https://github.com/rstudio/gradethis",
  "_pkgdown": "https://pkgs.rstudio.com/gradethis/",
  "_searchresults": 2012,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/gradethis.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    ".engine",
    ".envir_prep",
    ".envir_result",
    ".envir_solution",
    ".evaluate_result",
    ".label",
    ".last_value",
    ".result",
    ".solution",
    ".solution_all",
    ".solution_code",
    ".solution_code_all",
    ".stage",
    ".user",
    ".user_code",
    "%>%",
    "code_feedback",
    "condition",
    "debug_this",
    "eval_gradethis",
    "evaluate_condition",
    "fail",
    "fail_if",
    "fail_if_code_feedback",
    "fail_if_equal",
    "fail_if_error",
    "fail_if_not_equal",
    "give_code_feedback",
    "give_encouragement",
    "give_praise",
    "grade_code",
    "grade_conditions",
    "grade_feedback",
    "grade_learnr",
    "grade_result",
    "grade_result_strict",
    "grade_this",
    "grade_this_code",
    "graded",
    "gradethis_demo",
    "gradethis_equal",
    "gradethis_error_checker",
    "gradethis_exercise_checker",
    "gradethis_setup",
    "maybe_code_feedback",
    "mock_this_exercise",
    "pass",
    "pass_if",
    "pass_if_equal",
    "pipe_warning",
    "random_encourage",
    "random_encouragement",
    "random_praise",
    "solution_object_exists",
    "solution_object_get",
    "solution_object_list",
    "user_object_exists",
    "user_object_get",
    "user_object_list",
    "with_exercise"
  ],
  "_help": [
    {
      "page": "code_feedback",
      "title": "Provide automated code feedback",
      "topics": [
        "code_feedback",
        "give_code_feedback",
        "maybe_code_feedback"
      ]
    },
    {
      "page": "debug_this",
      "title": "Debug an exercise submission",
      "topics": [
        "debug_this"
      ]
    },
    {
      "page": "fail_if_code_feedback",
      "title": "Signal a failing grade if mistakes are detected in the submitted code",
      "topics": [
        "fail_if_code_feedback"
      ]
    },
    {
      "page": "fail_if_error",
      "title": "Fail if grading code produces an error",
      "topics": [
        "fail_if_error"
      ]
    },
    {
      "page": "grade_this",
      "title": "Grade a student's submission using custom logic",
      "topics": [
        "grade_this"
      ]
    },
    {
      "page": "grade_this_code",
      "title": "Grade student code against a solution",
      "topics": [
        "grade_this_code"
      ]
    },
    {
      "page": "grade_this-objects",
      "title": "Checking environment objects for use in 'grade_this()'",
      "topics": [
        ".engine",
        ".envir_prep",
        ".envir_result",
        ".envir_solution",
        ".evaluate_result",
        ".label",
        ".last_value",
        ".result",
        ".solution",
        ".solution_all",
        ".solution_code",
        ".solution_code_all",
        ".stage",
        ".user",
        ".user_code",
        "grade_this-objects"
      ]
    },
    {
      "page": "graded",
      "title": "Signal a final grade for a student's submission",
      "topics": [
        "fail",
        "graded",
        "pass"
      ]
    },
    {
      "page": "gradethis_equal",
      "title": "Compare the values of two objects to check whether they are equal",
      "topics": [
        "gradethis_equal",
        "gradethis_equal.default",
        "gradethis_equal.list"
      ]
    },
    {
      "page": "gradethis_error_checker",
      "title": "An error checking function for use with learnr",
      "topics": [
        "gradethis_error_checker"
      ]
    },
    {
      "page": "gradethis_exercise_checker",
      "title": "A checker function to use with 'learnr'",
      "topics": [
        "gradethis_exercise_checker"
      ]
    },
    {
      "page": "gradethis_setup",
      "title": "Setup gradethis for use within learnr",
      "topics": [
        "gradethis_setup"
      ]
    },
    {
      "page": "mock_this_exercise",
      "title": "Mock a user submission to an exercise",
      "topics": [
        "mock_this_exercise"
      ]
    },
    {
      "page": "pass_if",
      "title": "Signal a passing or failing grade if a condition is TRUE",
      "topics": [
        "fail_if",
        "pass_if"
      ]
    },
    {
      "page": "pass_if_equal",
      "title": "Signal a passing or failing grade if two values are equal",
      "topics": [
        "fail_if_equal",
        "fail_if_not_equal",
        "pass_if_equal"
      ]
    },
    {
      "page": "pipe_warning",
      "title": "Inform the user about how gradethis interprets piped code",
      "topics": [
        "pipe_warning"
      ]
    },
    {
      "page": "praise",
      "title": "Random praise and encouragement",
      "topics": [
        "give_encouragement",
        "give_praise",
        "praise",
        "random_encouragement",
        "random_praise"
      ]
    },
    {
      "page": "user_object",
      "title": "Functions for interacting with objects created by student and solution code",
      "topics": [
        "solution_object_exists",
        "solution_object_get",
        "solution_object_list",
        "user_object",
        "user_object_exists",
        "user_object_get",
        "user_object_list"
      ]
    },
    {
      "page": "with_exercise",
      "title": "Run an expression as if it were in an exercise's 'grade_this()' block",
      "topics": [
        "with_exercise"
      ]
    }
  ],
  "_pkglogo": "https://github.com/rstudio/gradethis/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/rstudio/gradethis/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "base64enc",
    "bslib",
    "cachem",
    "checkmate",
    "cli",
    "commonmark",
    "crayon",
    "diffobj",
    "digest",
    "ellipsis",
    "evaluate",
    "fastmap",
    "fontawesome",
    "fs",
    "glue",
    "highr",
    "htmltools",
    "htmlwidgets",
    "httpuv",
    "jquerylib",
    "jsonlite",
    "knitr",
    "later",
    "learnr",
    "lifecycle",
    "litedown",
    "magrittr",
    "markdown",
    "memoise",
    "mime",
    "otel",
    "promises",
    "purrr",
    "R6",
    "rappdirs",
    "Rcpp",
    "renv",
    "rlang",
    "rmarkdown",
    "rprojroot",
    "rstudioapi",
    "sass",
    "shiny",
    "sourcetools",
    "tinytex",
    "vctrs",
    "waldo",
    "watcher",
    "withr",
    "xfun",
    "xtable",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "gradethis.Rmd",
      "filename": "gradethis.html",
      "title": "gradethis",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Checking Student Code",
        "Custom Grading Logic",
        "Compare with Solution Code",
        "Writing Custom Logic",
        "Exercise Objects",
        "Grading Helper Functions",
        "Feedback Messages"
      ],
      "created": "2021-03-10 18:14:12",
      "modified": "2022-08-29 16:27:45",
      "commits": 4
    },
    {
      "source": "multiple_solutions.Rmd",
      "filename": "multiple_solutions.html",
      "title": "Multiple solutions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Multiple solutions, same result",
        "Example",
        "Providing different messages for different solutions",
        "Multiple solutions, different results",
        "Example",
        "Working with all solution results"
      ],
      "created": "2022-04-29 19:51:46",
      "modified": "2022-04-29 20:07:34",
      "commits": 2
    }
  ],
  "_score": 9.85292557558252,
  "_indexed": true,
  "_nocasepkg": "gradethis",
  "_universes": [
    "rstudio",
    "gadenbuie"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.14",
      "date": "2026-09-16T08:47:52.000Z",
      "distro": "resolute",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/9ab6e0de252b953070391542acb8f05164d3b322dcd7d76f616959b935c97d5a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.14",
      "date": "2026-09-16T08:48:07.000Z",
      "distro": "resolute",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/8944329b322b37bc1955ee3c91a602df8fbfc738f93287426b561be9aa3a8c35",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.14",
      "date": "2026-09-16T08:48:23.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/88b88ef1abac4758550197b7047789d4b133cbc86735d8c41019f160af29f325",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.14",
      "date": "2026-09-16T08:48:13.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/1a3e80cd6cd3cdae182b2e6b94cc4c14b369d4f3df0764064a1d90bb828e833a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.14",
      "date": "2026-09-16T08:47:39.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/3d5a1056552a049f32c4f7d79281e98fd3d2fdee48e1d3229f8a08d9c391ed7c",
      "status": "success",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.14",
      "date": "2026-09-16T08:46:06.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/bfb3b110ad8ab2b110e79f1c852d0cf9dc4236ced0657ded86f72dfcae0ddb62",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.14",
      "date": "2026-09-16T08:45:56.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/ec77ece5a9b81b625936af3194b23ad99a43b9f12997ac28c2ff8ab9ace3b359",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.14",
      "date": "2026-09-16T08:46:03.000Z",
      "commit": "48aaf8957cdac09f45f540f841a6bcd55ac5e2f1",
      "fileid": "https://r2.ropensci.org/b40aa3e731ba59a8529c54a81a2299fc7037db062818ab7e729fd44f32b399f8",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rstudio/actions/runs/35075062486"
    }
  ]
}