{
  "_id": "6abd1e3699f7aa8c6aa4f61d",
  "Package": "attachment",
  "Title": "Deal with Dependencies",
  "Version": "1.1.1",
  "Authors@R": "c(\nperson(\"Vincent\", \"Guyader\", , \"vincent@thinkr.fr\", role = c(\"cre\", \"aut\"),\ncomment = c(ORCID = \"0000-0003-0671-9270\")),\nperson(\"Sébastien\", \"Rochette\", , \"sebastienrochettefr@gmail.com\", role = c(\"aut\"),\ncomment = c(ORCID = \"0000-0002-1565-9313\", \"previous maintainer\")),\nperson(\"Murielle\", \"Delmotte\", , \"murielle@thinkr.fr\", role = \"aut\",\ncomment = c(ORCID = \"0000-0002-1339-2424\")),\nperson(\"Swann\", \"Floc'hlay\", , \"swann@thinkr.fr\", role = \"aut\",\ncomment = c(ORCID = \"0000-0003-1477-830X\")),\nperson(\"ThinkR\", role = c(\"cph\", \"fnd\"))\n)",
  "Description": "Manage dependencies during package development. This can\nretrieve all dependencies that are used in \".R\" files in the\n\"R/\" directory, in \".Rmd\" files in \"vignettes/\" directory and\nin 'roxygen2' documentation of functions. There is a function\nto update the \"DESCRIPTION\" file of your package with 'CRAN'\npackages or any other remote package.  All functions to\nretrieve dependencies of \".R\" scripts and \".Rmd\" or \".qmd\"\nfiles can be used independently of a package development.",
  "License": "GPL-3",
  "URL": "https://thinkr-open.github.io/attachment/,\nhttps://github.com/ThinkR-open/attachment",
  "BugReports": "https://github.com/ThinkR-open/attachment/issues",
  "VignetteBuilder": "knitr",
  "Config/fusen/version": "0.6.0",
  "Config/Needs/website": "ThinkR-open/thinkrtemplate",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Language": "en-US",
  "Config/pak/sysreqs": "cmake make libicu-dev libuv1-dev libxml2-dev",
  "Repository": "https://thinkr-open.r-universe.dev",
  "Date/Publication": "2026-09-30 11:31:50 UTC",
  "RemoteUrl": "https://github.com/ThinkR-open/attachment",
  "RemoteRef": "HEAD",
  "RemoteSha": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-09-30 14:25:48 UTC",
    "User": "root"
  },
  "Author": "Vincent Guyader [cre, aut] (ORCID:\n<https://orcid.org/0000-0003-0671-9270>),\nSébastien Rochette [aut] (ORCID:\n<https://orcid.org/0000-0002-1565-9313>, previous maintainer),\nMurielle Delmotte [aut] (ORCID:\n<https://orcid.org/0000-0002-1339-2424>),\nSwann Floc'hlay [aut] (ORCID: <https://orcid.org/0000-0003-1477-830X>),\nThinkR [cph, fnd]",
  "Maintainer": "Vincent Guyader <vincent@thinkr.fr>",
  "_user": "thinkr-open",
  "_type": "src",
  "_file": "attachment_1.1.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/c6ee23b264dc2c05342ef7e749ecf813590f241064a8b358683310afbc0e3b0f",
  "_filesize": 357640,
  "_sha256": "c6ee23b264dc2c05342ef7e749ecf813590f241064a8b358683310afbc0e3b0f",
  "_expires": "2027-01-08T14:35:32.000Z",
  "_created": "2026-09-30T14:25:48.000Z",
  "_published": "2026-09-30T14:35:34.585Z",
  "_jobs": [
    {
      "job": 109933576171,
      "time": 206,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11104520545"
    },
    {
      "job": 109931729373,
      "time": 247,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11103743985"
    },
    {
      "job": 109933576089,
      "time": 141,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11104615244"
    },
    {
      "job": 109933576497,
      "time": 101,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11104255396"
    },
    {
      "job": 109933576222,
      "time": 104,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11104570188"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739",
  "_status": "success",
  "_upstream": "https://github.com/ThinkR-open/attachment",
  "_commit": {
    "id": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
    "author": "vincent guyader <vincent@thinkr.fr>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Version pins, lockfile API and variable-name detection, consolidated (#145)\n\n* fix(att_amend_desc): preserve pinned versions and accept several dirs in dir.r\n\nKeep a version constraint set by hand in DESCRIPTION when the same package\nis listed under two types (a pinned Imports and a bare Suggests, say). The\nversion is no longer dropped, and an Imports/Suggests conflict resolves to\nImports independently of the row order in DESCRIPTION (#140).\n\nLet dir.r take several directories, e.g. dir.r = c(\"R\", \"inst\"), so\ndependencies used only outside the default scan can be declared. Passing a\nvector previously raised \"the condition has length > 1\" (#139).\n\n* test(renv): read lockfiles with renv::lockfile_read() for renv >= 1.2.4\n\nThe renv tests read back generated lockfiles through the internal\nrenv:::lockfile() path, which in renv 1.2.4 only accepts a manifest and\nerrors on a lockfile with \"don't know how to create a lockfile from an\nobject of class 'list'\". Switch to the exported renv::lockfile_read(),\navailable and stable since well before 1.2.2, which returns a\nrenv_lockfile object exposing $Packages directly. Package code is\nunaffected; this only touches the NOT_CRAN-gated renv tests.\n\n* fix(#143): a variable is not a package name\n\n`att_from_rscript()` read a bare symbol as a package name for all six entries of\n`pkg_intro_calls`. That is right for `library()`, `require()` and `use()`, which\ncompute on the unevaluated argument. It is wrong for `requireNamespace()`,\n`loadNamespace()` and the `ns` argument of `getFromNamespace()`, whose argument\nis an ordinary character string: `requireNamespace(jsonlite)` is an\n\"object not found\" error, so a symbol there can only be a variable holding the\nname.\n\nA guard over a list of optional packages therefore added the loop variable to\nDESCRIPTION, and every later renv / pak install stopped on a package that cannot\nexist. Measured end to end on a throwaway package whose test helper carries that\nidiom:\n\n  before   Suggests: outil, paquet",
    "time": 1790767910
  },
  "_maintainer": {
    "name": "Vincent Guyader",
    "email": "vincent@thinkr.fr",
    "login": "vincentguyader",
    "description": "Founder @ThinkR-open ",
    "uuid": 10470699,
    "orcid": "0000-0003-0671-9270"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.4",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "desc",
      "version": ">= 1.2.0",
      "role": "Imports"
    },
    {
      "package": "glue",
      "version": ">= 1.3.0",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "version": ">= 1.20",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "version": ">= 1.5",
      "role": "Imports"
    },
    {
      "package": "rmarkdown",
      "version": ">= 1.10",
      "role": "Imports"
    },
    {
      "package": "roxygen2",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "version": ">= 1.3.1",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Suggests"
    },
    {
      "package": "renv",
      "version": ">= 1.0.0",
      "role": "Suggests"
    },
    {
      "package": "rstudioapi",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "thinkr-open",
  "_selfowned": true,
  "_usedby": 5,
  "_updates": [
    {
      "week": "2026-17",
      "n": 2
    },
    {
      "week": "2026-18",
      "n": 2
    },
    {
      "week": "2026-22",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v1.0.0",
      "date": "2026-04-24"
    }
  ],
  "_topics": [
    "hacktoberfest"
  ],
  "_stars": 111,
  "_contributors": [
    {
      "user": "statnmap",
      "count": 194,
      "uuid": 21193866
    },
    {
      "user": "vincentguyader",
      "count": 110,
      "uuid": 10470699
    },
    {
      "user": "murielledelmotte",
      "count": 42,
      "uuid": 38312934
    },
    {
      "user": "dagousket",
      "count": 11,
      "uuid": 54443785
    },
    {
      "user": "espinielli",
      "count": 2,
      "uuid": 891692
    },
    {
      "user": "maelle",
      "count": 2,
      "uuid": 8360597
    },
    {
      "user": "dianebeldame",
      "count": 2,
      "uuid": 9906346
    },
    {
      "user": "cderv",
      "count": 1,
      "uuid": 6791940
    },
    {
      "user": "colinfay",
      "count": 1,
      "uuid": 17936236
    },
    {
      "user": "r-kenk",
      "count": 1,
      "uuid": 54773822
    }
  ],
  "_userbio": {
    "uuid": 19155426,
    "type": "organization",
    "name": "ThinkR",
    "followers": 265,
    "description": "R Engineering, training, and consulting"
  },
  "_downloads": {
    "count": 2893,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/attachment"
  },
  "_devurl": "https://github.com/thinkr-open/attachment",
  "_pkgdown": "https://thinkr-open.github.io/attachment/",
  "_searchresults": 74,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/attachment.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_homeurl": "https://github.com/thinkr-open/attachment",
  "_realowner": "thinkr-open",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.0.9",
      "date": "2019-05-05"
    },
    {
      "version": "0.1.0",
      "date": "2020-03-15"
    },
    {
      "version": "0.2.0",
      "date": "2021-01-19"
    },
    {
      "version": "0.2.1",
      "date": "2021-01-21"
    },
    {
      "version": "0.2.3",
      "date": "2021-11-10"
    },
    {
      "version": "0.2.4",
      "date": "2021-11-16"
    },
    {
      "version": "0.2.5",
      "date": "2022-05-15"
    },
    {
      "version": "0.3.0",
      "date": "2022-09-19"
    },
    {
      "version": "0.3.1",
      "date": "2023-01-27"
    },
    {
      "version": "0.4.0",
      "date": "2023-05-31"
    },
    {
      "version": "0.4.1",
      "date": "2024-01-22"
    },
    {
      "version": "0.4.2",
      "date": "2024-07-01"
    },
    {
      "version": "0.4.3",
      "date": "2025-01-31"
    },
    {
      "version": "0.4.4",
      "date": "2025-02-08"
    },
    {
      "version": "0.4.5",
      "date": "2025-03-14"
    },
    {
      "version": "1.0.0",
      "date": "2026-04-25"
    },
    {
      "version": "1.1.0",
      "date": "2026-08-20"
    }
  ],
  "_exports": [
    "%>%",
    "att_amend_desc",
    "att_from_data",
    "att_from_description",
    "att_from_examples",
    "att_from_namespace",
    "att_from_qmd",
    "att_from_qmds",
    "att_from_rmd",
    "att_from_rmds",
    "att_from_rscript",
    "att_from_rscripts",
    "att_to_desc_from_is",
    "att_to_desc_from_pkg",
    "att_to_description",
    "complete_remote_branch",
    "create_dependencies_file",
    "create_renv_for_dev",
    "create_renv_for_prod",
    "find_remotes",
    "install_from_description",
    "install_if_missing",
    "set_remotes_to_desc"
  ],
  "_help": [
    {
      "page": "att_amend_desc",
      "title": "Amend DESCRIPTION with dependencies read from package code parsing",
      "topics": [
        "att_amend_desc",
        "att_to_desc_from_pkg"
      ]
    },
    {
      "page": "att_from_data",
      "title": "Look for functions called in data loading code",
      "topics": [
        "att_from_data"
      ]
    },
    {
      "page": "att_from_description",
      "title": "Return all package dependencies from current package",
      "topics": [
        "att_from_description"
      ]
    },
    {
      "page": "att_from_examples",
      "title": "Get all packages called in examples from R files",
      "topics": [
        "att_from_examples"
      ]
    },
    {
      "page": "att_from_namespace",
      "title": "return package dependencies from NAMESPACE file",
      "topics": [
        "att_from_namespace"
      ]
    },
    {
      "page": "att_from_rmd",
      "title": "Get all dependencies from a Rmd file",
      "topics": [
        "att_from_qmd",
        "att_from_rmd"
      ]
    },
    {
      "page": "att_from_rmds",
      "title": "Get all packages called in vignettes folder",
      "topics": [
        "att_from_qmds",
        "att_from_rmds"
      ]
    },
    {
      "page": "att_from_rscript",
      "title": "Look for functions called with '::' and library/requires in one script",
      "topics": [
        "att_from_rscript"
      ]
    },
    {
      "page": "att_from_rscripts",
      "title": "Look for functions called with '::' and library/requires in folder of scripts",
      "topics": [
        "att_from_rscripts"
      ]
    },
    {
      "page": "att_to_desc_from_is",
      "title": "Amend DESCRIPTION with dependencies from imports and suggests package list",
      "topics": [
        "att_to_desc_from_is"
      ]
    },
    {
      "page": "create_dependencies_file",
      "title": "Create the list of instructions to install dependencies from a DESCRIPTION file",
      "topics": [
        "create_dependencies_file"
      ]
    },
    {
      "page": "create_renv_for_dev",
      "title": "Create reproducible environments for your R projects with _renv_",
      "topics": [
        "create_renv_for_dev",
        "create_renv_for_prod"
      ]
    },
    {
      "page": "find_remotes",
      "title": "Proposes values for Remotes field for DESCRIPTION file based on your installation",
      "topics": [
        "find_remotes"
      ]
    },
    {
      "page": "install_from_description",
      "title": "Install missing package from DESCRIPTION",
      "topics": [
        "install_from_description"
      ]
    },
    {
      "page": "install_if_missing",
      "title": "install packages if missing",
      "topics": [
        "install_if_missing"
      ]
    },
    {
      "page": "set_remotes_to_desc",
      "title": "Add Remotes field to DESCRIPTION based on your local installation",
      "topics": [
        "set_remotes_to_desc"
      ]
    }
  ],
  "_pkglogo": "https://github.com/ThinkR-open/attachment/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/ThinkR-open/attachment/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "brew",
    "bslib",
    "cachem",
    "callr",
    "cli",
    "commonmark",
    "cpp11",
    "desc",
    "digest",
    "evaluate",
    "fastmap",
    "fontawesome",
    "fs",
    "glue",
    "highr",
    "htmltools",
    "jquerylib",
    "jsonlite",
    "knitr",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "otel",
    "pkgbuild",
    "pkgload",
    "processx",
    "ps",
    "R6",
    "rappdirs",
    "rdtools",
    "rlang",
    "rmarkdown",
    "roxygen2",
    "rprojroot",
    "sass",
    "stringi",
    "stringr",
    "tinytex",
    "vctrs",
    "withr",
    "xfun",
    "xml2",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "a-fill-pkg-description.Rmd",
      "filename": "a-fill-pkg-description.html",
      "title": "a-Help during package development",
      "author": "Sébastien Rochette",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Load package",
        "Use \"dev/dev_history.R\"",
        "Fill your DESCRIPTION file",
        "Change default parameters",
        "Use the configuration file",
        "Ignore some of the dependencies automatically detected",
        "Add extra Suggests dependencies",
        "Move detected dependencies from Imports to Suggests",
        "A package was not detected by att_amend_desc",
        "I have a Rmarkdown file / Quarto file in my \"inst/\" directory",
        "I have an R script in my \"inst/\" directory",
        "Example on a fake package",
        "Propose content for \"Remotes\" field",
        "Create a file for package installation",
        "Other possibilities"
      ],
      "created": "2021-11-15 22:13:08",
      "modified": "2026-09-30 11:31:50",
      "commits": 10
    },
    {
      "source": "b-bookdown-and-scripts.Rmd",
      "filename": "b-bookdown-and-scripts.html",
      "title": "Bookdown, quarto and other scripts dependencies",
      "author": "Sébastien Rochette",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Load package",
        "Use \"dev/dev_history.R\"",
        "Use {attachment} with {bookdown} / {pagedown} / {quarto} dependencies",
        "Propose content for \"Remotes\" field",
        "Get all packages listed in \"namespace\"",
        "Get all packages added using pkg::function or library/require",
        "Get all packages called in your Rmd",
        "Get all packages called in your Rmd and show them in this same Rmd"
      ],
      "created": "2021-11-15 22:13:08",
      "modified": "2024-08-01 15:10:45",
      "commits": 5
    },
    {
      "source": "create-dependencies-file.Rmd",
      "filename": "create-dependencies-file.html",
      "title": "Create dependencies file",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Write instructions to install all dependencies from a \"DESCRIPTION\" file"
      ],
      "created": "2023-03-27 10:30:02",
      "modified": "2026-04-24 13:03:05",
      "commits": 7
    },
    {
      "source": "use_renv.Rmd",
      "filename": "use_renv.html",
      "title": "Use {renv} with developers tools",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Create reproducible environments for your R projects with"
      ],
      "created": "2022-05-13 16:34:32",
      "modified": "2022-05-13 16:34:32",
      "commits": 1
    }
  ],
  "_score": 10.409326887652567,
  "_indexed": true,
  "_nocasepkg": "attachment",
  "_universes": [
    "thinkr-open",
    "vincentguyader"
  ],
  "_previous": "1.0.1",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.1.1",
      "date": "2026-09-30T14:27:56.000Z",
      "distro": "resolute",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/abaf584db952319bf9136a336c78a46a3e363a4a20d5e20a0ecd8b42e0510d91",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.1.1",
      "date": "2026-09-30T14:28:59.000Z",
      "distro": "resolute",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/44ddfe3ac78ef91ed053ecc78978492c5b29545848e719624c24a43350dfa59e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.1.1",
      "date": "2026-09-30T14:31:51.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/e69c0c0580b3b3ed5753dffe16eb4e19a3dcea7e27d8fd688390afe4c84d08e2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.1.1",
      "date": "2026-09-30T14:34:19.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/fdf4ee49152f9e8bcff968b59ccd8deb630777e1471200d257f4770f53b4b38b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.1.1",
      "date": "2026-09-30T14:28:26.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/5764c55f5b5aec4ba65afd5089bd925a6d9e1c4c1b24dc8245c729dff9bffb05",
      "status": "success",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.1.1",
      "date": "2026-09-30T14:26:56.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/7c5821c883c46eb6bdcee052e0d022d5ee3b7d9a197241a20d4a950d29fd244f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.1.1",
      "date": "2026-09-30T14:26:58.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/9aa0ecb40226a8c156bcb934fbd4f69004260cf321980d3f9d26c71451c60e49",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.1.1",
      "date": "2026-09-30T14:26:59.000Z",
      "commit": "47a8ea5f219196121a50b24d85d78c1fc64945ca",
      "fileid": "https://r2.ropensci.org/6b088d1bc49b2238108f3bdc656c53a34c3faccb4d676641082b5a1c6479d2f2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/thinkr-open/actions/runs/36728510739"
    }
  ]
}