{
  "_id": "6acb525ffe5cc25786e8e226",
  "Type": "Package",
  "Package": "ggtrace",
  "Title": "Programmatically explore, debug, and manipulate ggplot internals",
  "Version": "0.7.7",
  "Authors@R": "person(\"June\", \"Choe\", , \"jchoe001@gmail.com\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-0701-921X\"))",
  "Description": "Programmatically explore, debug, and manipulate ggplot\ninternals. Package ggtrace offers a low-level interface that\nextends base R capabilities of trace, as well as a family of\nworkflow functions that make interactions with ggplot internals\nmore accessible.",
  "License": "MIT + file LICENSE",
  "URL": "https://yjunechoe.github.io/ggtrace,\nhttps://github.com/yjunechoe/ggtrace",
  "BugReports": "https://github.com/yjunechoe/ggtrace/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "Collate": "'utils.R' 'helpers.R' 'get_method.R' 'tracedump.R' 'ggedit.R'\n'gguntrace.R' 'ggtrace.R' 'one-offs.R' 'with_ggtrace.R'\n'topic-tracing-context.R' 'workflows-utils.R'\n'workflows-inspect.R' 'workflows-capture.R'\n'workflows-highjack.R' 'aliases.R' 'last-errorcontext.R'\n'sublayer-data.R' 'zzz.R'",
  "Repository": "https://yjunechoe.r-universe.dev",
  "Date/Publication": "2025-12-10 00:28:02 UTC",
  "RemoteUrl": "https://github.com/yjunechoe/ggtrace",
  "RemoteRef": "HEAD",
  "RemoteSha": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-11 09:06:32 UTC",
    "User": "root"
  },
  "Author": "June Choe [aut, cre] (ORCID: <https://orcid.org/0000-0002-0701-921X>)",
  "Maintainer": "June Choe <jchoe001@gmail.com>",
  "_user": "yjunechoe",
  "_type": "src",
  "_file": "ggtrace_0.7.7.tar.gz",
  "_fileid": "https://r2.ropensci.org/80decf3a9742e4b9bd30cda22457363224f14e1135f0c3c89f8183cb3a0f110d",
  "_filesize": 2936309,
  "_sha256": "80decf3a9742e4b9bd30cda22457363224f14e1135f0c3c89f8183cb3a0f110d",
  "_expires": "2027-01-19T09:09:49.000Z",
  "_created": "2026-10-11T09:06:32.000Z",
  "_published": "2026-10-11T09:09:51.423Z",
  "_buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 114433961921,
      "time": 155,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11696744413"
    },
    {
      "job": 114433961931,
      "time": 162,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11697618429"
    },
    {
      "job": 114433961953,
      "time": 145,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11697348845"
    },
    {
      "job": 114433962010,
      "time": 130,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11697598522"
    },
    {
      "job": 114433194183,
      "time": 255,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11697518201"
    },
    {
      "job": 114433962088,
      "time": 95,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11696918779"
    },
    {
      "job": 114433961966,
      "time": 99,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11697728114"
    },
    {
      "job": 114433961965,
      "time": 132,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11697284106"
    },
    {
      "job": 114433961987,
      "time": 119,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11696888975"
    }
  ],
  "_upstream": "https://github.com/yjunechoe/ggtrace",
  "_commit": {
    "id": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
    "author": "yjunechoe <jchoe001@gmail.com>",
    "committer": "yjunechoe <jchoe001@gmail.com>",
    "message": "loosen test\n",
    "time": 1765326482
  },
  "_maintainer": {
    "name": "June Choe",
    "email": "jchoe001@gmail.com",
    "login": "yjunechoe",
    "mastodon": "@yjunechoe@fosstodon.org",
    "linkedin": "in/yjunechoe",
    "twitter": "@yjunechoe",
    "description": "Computational linguist at Amazon. Linguistics PhD. Open source, data science, graphics.",
    "uuid": 52832839,
    "orcid": "0000-0002-0701-921X"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.3.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "ggforce",
      "role": "Suggests"
    },
    {
      "package": "ggh4x",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.4.0",
      "role": "Suggests"
    },
    {
      "package": "grid",
      "role": "Suggests"
    },
    {
      "package": "Hmisc",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "palmerpenguins",
      "role": "Suggests"
    },
    {
      "package": "patchwork",
      "role": "Suggests"
    },
    {
      "package": "pkgdown",
      "role": "Suggests"
    },
    {
      "package": "R6",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "yjunechoe",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-43",
      "n": 1
    },
    {
      "week": "2025-50",
      "n": 1
    }
  ],
  "_tags": [],
  "_topics": [
    "debugging",
    "ggplot2",
    "metaprogramming"
  ],
  "_stars": 61,
  "_contributors": [
    {
      "user": "yjunechoe",
      "count": 441,
      "uuid": 52832839
    }
  ],
  "_userbio": {
    "uuid": 52832839,
    "type": "user",
    "name": "June Choe",
    "followers": 102,
    "description": "Computational linguist at Amazon. Linguistics PhD. Open source, data science, graphics."
  },
  "_downloads": {
    "count": 360,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ggtrace"
  },
  "_devurl": "https://github.com/yjunechoe/ggtrace",
  "_pkgdown": "https://yjunechoe.github.io/ggtrace",
  "_searchresults": 69,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/ggtrace.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/rnabioco/ggtrace",
  "_realowner": "rnabioco",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2022-06-24"
    }
  ],
  "_exports": [
    ".layer_is",
    "capture_env",
    "capture_fn",
    "clear_global_ggtrace",
    "clear_last_ggtrace",
    "get_method",
    "get_method_inheritance",
    "ggbody",
    "ggdebug",
    "ggdebugonce",
    "ggdraw_silent",
    "ggedit",
    "ggformals",
    "ggtrace",
    "ggtrace_capture_env",
    "ggtrace_capture_fn",
    "ggtrace_highjack_args",
    "ggtrace_highjack_return",
    "ggtrace_inspect_args",
    "ggtrace_inspect_n",
    "ggtrace_inspect_on_error",
    "ggtrace_inspect_return",
    "ggtrace_inspect_vars",
    "ggtrace_inspect_which",
    "ggundebug",
    "gguntrace",
    "global_ggtrace",
    "global_ggtrace_off",
    "global_ggtrace_on",
    "global_ggtrace_state",
    "highjack_args",
    "highjack_return",
    "inspect_args",
    "inspect_n",
    "inspect_on_error",
    "inspect_return",
    "inspect_vars",
    "inspect_which",
    "is_traced",
    "last_ggtrace",
    "last_layer_errorcontext",
    "last_sublayer_errorcontext",
    "layer_after_scale",
    "layer_after_stat",
    "layer_before_geom",
    "layer_before_stat",
    "layer_is",
    "set_global_ggtrace",
    "set_last_ggtrace",
    "with_ggtrace"
  ],
  "_help": [
    {
      "page": "get_method",
      "title": "Get information about ggproto methods",
      "topics": [
        "get_method",
        "get_method_inheritance",
        "ggbody",
        "ggformals"
      ]
    },
    {
      "page": "ggdebug",
      "title": "Debug a ggproto method",
      "topics": [
        "ggdebug",
        "ggdebugonce",
        "ggundebug"
      ]
    },
    {
      "page": "ggedit",
      "title": "Interactively edit a masking copy of the source code",
      "topics": [
        "ggedit"
      ]
    },
    {
      "page": "ggtrace",
      "title": "Insert traces for delayed evaluation",
      "topics": [
        "ggtrace"
      ]
    },
    {
      "page": "ggtrace_capture_env",
      "title": "Capture a snapshot of a method's execution environment",
      "topics": [
        "capture_env",
        "ggtrace_capture_env"
      ]
    },
    {
      "page": "ggtrace_capture_fn",
      "title": "Capture a snapshot of a method as a pre-filled function",
      "topics": [
        "capture_fn",
        "ggtrace_capture_fn"
      ]
    },
    {
      "page": "ggtrace_highjack_args",
      "title": "Highjack a method's execution and modify its argument values",
      "topics": [
        "ggtrace_highjack_args",
        "highjack_args"
      ]
    },
    {
      "page": "ggtrace_highjack_return",
      "title": "Highjack a method's execution and make it return a user-supplied value",
      "topics": [
        "ggtrace_highjack_return",
        "highjack_return"
      ]
    },
    {
      "page": "ggtrace_inspect_args",
      "title": "Inspect the arguments passed into a method",
      "topics": [
        "ggtrace_inspect_args",
        "inspect_args"
      ]
    },
    {
      "page": "ggtrace_inspect_n",
      "title": "Inspect how many times a method was called",
      "topics": [
        "ggtrace_inspect_n",
        "inspect_n"
      ]
    },
    {
      "page": "ggtrace_inspect_on_error",
      "title": "Get information about a ggproto method on error",
      "topics": [
        "ggtrace_inspect_on_error",
        "inspect_on_error"
      ]
    },
    {
      "page": "ggtrace_inspect_return",
      "title": "Inspect the return value of a method",
      "topics": [
        "ggtrace_inspect_return",
        "inspect_return"
      ]
    },
    {
      "page": "ggtrace_inspect_vars",
      "title": "Inspect the value of variables from a method",
      "topics": [
        "ggtrace_inspect_vars",
        "inspect_vars"
      ]
    },
    {
      "page": "ggtrace_inspect_which",
      "title": "Inspect which calls to a ggproto method met a particular condition",
      "topics": [
        "ggtrace_inspect_which",
        "inspect_which"
      ]
    },
    {
      "page": "gguntrace",
      "title": "Remove any existing traces",
      "topics": [
        "gguntrace"
      ]
    },
    {
      "page": "is_traced",
      "title": "Check if a method is being traced",
      "topics": [
        "is_traced"
      ]
    },
    {
      "page": "last_layer_errorcontext",
      "title": "Get the internal context of the last (sub-)layer error",
      "topics": [
        "last_layer_errorcontext",
        "last_sublayer_errorcontext"
      ]
    },
    {
      "page": "with_ggtrace",
      "title": "Generic workflow function which localizes a ggtrace call to a single ggplot object",
      "topics": [
        "with_ggtrace"
      ]
    }
  ],
  "_pkglogo": "https://github.com/yjunechoe/ggtrace/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/yjunechoe/ggtrace/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "rlang"
  ],
  "_vignettes": [
    {
      "source": "FAQ.Rmd",
      "filename": "FAQ.html",
      "title": "Frequently asked questions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Is ggtrace() safe?",
        "What can you ggtrace()?",
        "Functions",
        "ggproto methods",
        "R6 methods",
        "What can't you ggtrace()?",
        "How can I save a modified ggplot?"
      ],
      "created": "2021-10-27 23:20:47",
      "modified": "2025-06-17 01:25:14",
      "commits": 10
    },
    {
      "source": "examples-gallery.Rmd",
      "filename": "examples-gallery.html",
      "title": "Examples gallery",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Highjack layer data",
        "Debug complex aes() expressions",
        "Inspect sub-layer data",
        "Intervene with surgical precision",
        "Highjack the drawing context"
      ],
      "created": "2025-05-16 01:49:41",
      "modified": "2025-10-22 01:39:29",
      "commits": 4
    },
    {
      "source": "pedagogical-philosophy.Rmd",
      "filename": "pedagogical-philosophy.html",
      "title": "Pedagogical Philosophy",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Stage 1 (experienced user)",
        "Stage 2 (curious user)",
        "Stage 3 (aspiring developer)",
        "Stage 4 (developer)",
        "Stage 5 (contributor)"
      ],
      "created": "2025-05-16 01:49:41",
      "modified": "2025-05-16 01:49:41",
      "commits": 1
    },
    {
      "source": "workflow-functions.Rmd",
      "filename": "workflow-functions.html",
      "title": "Workflow functions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Workflows for interacting with ggplot internals",
        "A walkthrough with geom_smooth()",
        "Inspect",
        "Capture",
        "Highjack"
      ],
      "created": "2025-05-15 17:29:55",
      "modified": "2025-05-16 01:49:41",
      "commits": 2
    },
    {
      "source": "extending-trace.Rmd",
      "filename": "extending-trace.html",
      "title": "Extending trace()",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Extending base::trace() with ggtrace()"
      ],
      "created": "2025-05-15 17:29:55",
      "modified": "2025-05-16 01:49:41",
      "commits": 2
    }
  ],
  "_score": 6.3231489300840416,
  "_indexed": false,
  "_nocasepkg": "ggtrace",
  "_universes": [
    "yjunechoe"
  ],
  "_indexurl": "https://rnabioco.r-universe.dev/ggtrace",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.7.7",
      "date": "2026-10-11T09:08:37.000Z",
      "distro": "resolute",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/624ce3745cb56041050ae6e581fd8e9b79226add74c83bc2fd952ee0dde46712",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.7.7",
      "date": "2026-10-11T09:08:40.000Z",
      "distro": "resolute",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/9a1fdb36e2fcf21b263f83f2a8c3add1195126933698572e93d4e5419e01fa48",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.7.7",
      "date": "2026-10-11T09:08:33.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/4d397cc1b06de46bda5c42b607e6e1c3a6eb328b82ada15e6938b2b5b9065842",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.7.7",
      "date": "2026-10-11T09:08:28.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/5d375669c92b8291e20c5f6037f85abed9d70fa886726902a70e675f8b4403a9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.7.7",
      "date": "2026-10-11T09:08:27.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/96fac42537b47e176ec9051505486e396fcc5044fedadb0c400a4b99709a5256",
      "status": "success",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.7.7",
      "date": "2026-10-11T09:07:53.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/195c14db43e7ed94ef9ce12d15f5583ae85064049046bf6cd67db73d170cb6e3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.7.7",
      "date": "2026-10-11T09:07:59.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/384b5fae0acebccb95510d296f68825c7534ed00d3a79e898bcfc04de053da5b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.7.7",
      "date": "2026-10-11T09:07:53.000Z",
      "commit": "d608506b79e9b4feef854b57d91e9aa2c8b7d3a1",
      "fileid": "https://r2.ropensci.org/603eef9a9f17cfe28a2f5d20b2600de85fa99df599f259634ecd729f9435b474",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yjunechoe/actions/runs/38126928386"
    }
  ]
}