{
  "_id": "6ad06f40e2d863f6629545e2",
  "Package": "reproducible",
  "Type": "Package",
  "Title": "Enhance Reproducibility of R Code",
  "Description": "A collection of high-level, machine- and OS-independent\ntools for making reproducible and reusable content in R. The\ntwo workhorse functions are 'Cache()' and 'prepInputs()'.\n'Cache()' allows for nested caching, is robust to environments\nand objects with environments (like functions), and deals with\nsome classes of file-backed R objects e.g., from 'terra' and\n'raster' packages. Both functions have been developed to be\nfoundational components of data retrieval and processing in\ncontinuous workflow situations. In both functions, efforts are\nmade to make the first and subsequent calls of functions have\nthe same result, but faster at subsequent times by way of\nchecksums and digesting. Several features are still under\ndevelopment, including cloud storage of cached objects allowing\nfor sharing between users. Several advanced options are\navailable, see '?reproducibleOptions()'.",
  "SystemRequirements": "'unrar' (Linux/macOS) or '7-Zip' (Windows) to work\nwith '.rar' files.",
  "URL": "https://reproducible.predictiveecology.org,\nhttps://github.com/PredictiveEcology/reproducible",
  "Date": "2026-10-08",
  "Version": "3.2.1.9072",
  "Authors@R": "c(person(given = \"Eliot J B\",\nfamily = \"McIntire\",\nrole = c(\"aut\", \"cre\"),\nemail = \"eliot.mcintire@canada.ca\",\ncomment = c(ORCID = \"0000-0002-6914-8316\")),\nperson(given = \"Alex M\",\nfamily = \"Chubaty\",\nrole = c(\"aut\"),\nemail = \"achubaty@for-cast.ca\",\ncomment = c(ORCID = \"0000-0001-7146-8135\")),\nperson(given = \"Tati\",\nfamily = \"Micheletti\",\nrole = \"ctb\",\nemail = \"tati.micheletti@gmail.com\",\ncomment = c(ORCID = \"0000-0003-4838-8342\")),\nperson(given = \"Ceres\",\nfamily = \"Barros\",\nrole = \"ctb\",\nemail = \"ceres.barros@ubc.ca\",\ncomment = c(ORCID = \"0000-0003-4036-977X\")),\nperson(given = \"Ian\",\nfamily = \"Eddy\",\nrole = \"ctb\",\nemail = \"ian.eddy@nrcan-rncan.gc.ca\",\ncomment = c(ORCID = \"0000-0001-7397-2116\")),\nperson(given = \"His Majesty the King in Right of Canada, as represented by the Minister of Natural Resources Canada\",\nrole = \"cph\"))",
  "Encoding": "UTF-8",
  "Language": "en-CA",
  "License": "GPL-3",
  "VignetteBuilder": "knitr, rmarkdown",
  "BugReports": "https://github.com/PredictiveEcology/reproducible/issues",
  "ByteCompile": "yes",
  "Roxygen": "list(markdown = TRUE)",
  "Config/roxygen2/version": "8.1.0",
  "Collate": "'DBI.R' 'cache-call.R' 'cache-digest.R' 'cache-helpers.R'\n'cache-internals.R' 'cache-repo.R' 'cache-report.R'\n'robustDigest.R' 'messages.R' 'cache.R' 'cacheGeo.R'\n'cacheGeoFamily.R' 'checksums.R' 'cloud.R' 'convertPaths.R'\n'copy.R' 'download.R' 'downloadTileAndUpload.R'\n'exportedMethods.R' 'gis.R' 'helpers.R' 'listNamed.R'\n'objectSize.R' 'options.R' 'packages.R' 'paths.R' 'pipe.R'\n'postProcess.R' 'postProcessTo.R' 'preProcess.R' 'prepInputs.R'\n'prepInputsCOG.R' 'reproducible-deprecated.R'\n'reproducible-package.R' 'search.R' 'showCacheEtc.R'\n'spatialObjects-class.R' 'terra-migration.R' 'urlLog.R'\n'whyNoCacheHit.R' 'zzz.R'",
  "Config/pak/sysreqs": "cmake make libuv1-dev",
  "Repository": "https://predictiveecology.r-universe.dev",
  "Date/Publication": "2026-10-15 02:34:00 UTC",
  "RemoteUrl": "https://github.com/PredictiveEcology/reproducible",
  "RemoteRef": "development",
  "RemoteSha": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-15 06:04:52 UTC",
    "User": "root"
  },
  "Author": "Eliot J B McIntire [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-6914-8316>),\nAlex M Chubaty [aut] (ORCID: <https://orcid.org/0000-0001-7146-8135>),\nTati Micheletti [ctb] (ORCID: <https://orcid.org/0000-0003-4838-8342>),\nCeres Barros [ctb] (ORCID: <https://orcid.org/0000-0003-4036-977X>),\nIan Eddy [ctb] (ORCID: <https://orcid.org/0000-0001-7397-2116>),\nHis Majesty the King in Right of Canada, as represented by the Minister\nof Natural Resources Canada [cph]",
  "Maintainer": "Eliot J B McIntire <eliot.mcintire@canada.ca>",
  "_user": "predictiveecology",
  "_type": "src",
  "_file": "reproducible_3.2.1.9072.tar.gz",
  "_fileid": "https://r2.ropensci.org/738eca643c076327ca887eadf61dbcb4e0096bb774c33890ec568dff47060ff4",
  "_filesize": 1449248,
  "_sha256": "738eca643c076327ca887eadf61dbcb4e0096bb774c33890ec568dff47060ff4",
  "_expires": "2027-01-23T06:14:22.000Z",
  "_created": "2026-10-15T06:04:52.000Z",
  "_published": "2026-10-15T06:14:24.519Z",
  "_buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 116274636087,
      "time": 246,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11951767610"
    },
    {
      "job": 116274636341,
      "time": 265,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11951639332"
    },
    {
      "job": 116274636147,
      "time": 171,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11951109186"
    },
    {
      "job": 116274636264,
      "time": 224,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11951344206"
    },
    {
      "job": 116273508617,
      "time": 223,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11951163653"
    },
    {
      "job": 116274636214,
      "time": 121,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11952098329"
    },
    {
      "job": 116274636244,
      "time": 481,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11952370054"
    },
    {
      "job": 116274636175,
      "time": 478,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11952144493"
    },
    {
      "job": 116274636167,
      "time": 494,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11951053560"
    }
  ],
  "_upstream": "https://github.com/PredictiveEcology/reproducible",
  "_commit": {
    "id": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
    "author": "Eliot McIntire <eliotmcintire@gmail.com>",
    "committer": "Eliot McIntire <eliotmcintire@gmail.com>",
    "message": "Bump to 3.2.1.9072 (after #647, #646)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014G18Mik3fH4z5M5CyMSUS6\n",
    "time": 1792031640
  },
  "_maintainer": {
    "name": "Eliot J B McIntire",
    "email": "eliot.mcintire@canada.ca",
    "orcid": "0000-0002-6914-8316"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.3",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "version": ">= 1.10.4",
      "role": "Imports"
    },
    {
      "package": "digest",
      "role": "Imports"
    },
    {
      "package": "filelock",
      "version": ">= 1.0.3",
      "role": "Imports"
    },
    {
      "package": "fpCompare",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "lobstr",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "xgboost",
      "role": "Suggests"
    },
    {
      "package": "archive",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "curl",
      "version": ">= 7.0.0",
      "role": "Suggests"
    },
    {
      "package": "DBI",
      "role": "Suggests"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "geodata",
      "role": "Suggests"
    },
    {
      "package": "glue",
      "role": "Suggests"
    },
    {
      "package": "googledrive",
      "role": "Suggests"
    },
    {
      "package": "httr",
      "role": "Suggests"
    },
    {
      "package": "httr2",
      "version": ">= 1.2.1",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "parallel",
      "role": "Suggests"
    },
    {
      "package": "parallelly",
      "role": "Suggests"
    },
    {
      "package": "qs2",
      "role": "Suggests"
    },
    {
      "package": "raster",
      "version": ">= 3.5-15",
      "role": "Suggests"
    },
    {
      "package": "RCurl",
      "version": ">= 1.95-4.8",
      "role": "Suggests"
    },
    {
      "package": "rlang",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "RSQLite",
      "role": "Suggests"
    },
    {
      "package": "R.utils",
      "role": "Suggests"
    },
    {
      "package": "rvest",
      "role": "Suggests"
    },
    {
      "package": "sf",
      "role": "Suggests"
    },
    {
      "package": "sp",
      "version": ">= 1.4-2",
      "role": "Suggests"
    },
    {
      "package": "terra",
      "version": ">= 1.7-20",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "predictiveecology",
  "_selfowned": true,
  "_usedby": 14,
  "_updates": [
    {
      "week": "2025-45",
      "n": 1
    },
    {
      "week": "2025-49",
      "n": 2
    },
    {
      "week": "2026-02",
      "n": 2
    },
    {
      "week": "2026-16",
      "n": 1
    },
    {
      "week": "2026-20",
      "n": 12
    },
    {
      "week": "2026-21",
      "n": 9
    },
    {
      "week": "2026-22",
      "n": 4
    },
    {
      "week": "2026-23",
      "n": 11
    },
    {
      "week": "2026-24",
      "n": 21
    },
    {
      "week": "2026-25",
      "n": 4
    },
    {
      "week": "2026-26",
      "n": 1
    },
    {
      "week": "2026-34",
      "n": 30
    },
    {
      "week": "2026-35",
      "n": 29
    },
    {
      "week": "2026-36",
      "n": 8
    },
    {
      "week": "2026-37",
      "n": 13
    },
    {
      "week": "2026-38",
      "n": 10
    },
    {
      "week": "2026-39",
      "n": 7
    },
    {
      "week": "2026-40",
      "n": 19
    },
    {
      "week": "2026-41",
      "n": 22
    },
    {
      "week": "2026-42",
      "n": 3
    }
  ],
  "_tags": [
    {
      "name": "v3.1.0",
      "date": "2026-05-16"
    },
    {
      "name": "v3.1.1",
      "date": "2026-05-18"
    },
    {
      "name": "v3.2.0",
      "date": "2026-08-25"
    }
  ],
  "_topics": [
    "reproducibility",
    "reproducible-research"
  ],
  "_stars": 39,
  "_contributors": [
    {
      "user": "eliotmcintire",
      "count": 3385,
      "uuid": 1100507
    },
    {
      "user": "achubaty",
      "count": 1372,
      "uuid": 3435577
    },
    {
      "user": "tati-micheletti",
      "count": 115,
      "uuid": 33500569
    },
    {
      "user": "ianmseddy",
      "count": 96,
      "uuid": 31015280
    },
    {
      "user": "ceresbarros",
      "count": 24,
      "uuid": 22214224
    },
    {
      "user": "melinahoule",
      "count": 3,
      "uuid": 10730242
    },
    {
      "user": "nbsmokee",
      "count": 1,
      "uuid": 64212715
    },
    {
      "user": "stewid",
      "count": 1,
      "uuid": 1815965
    }
  ],
  "_userbio": {
    "uuid": 10555025,
    "type": "organization",
    "name": "Predictive Ecology Group",
    "followers": 38,
    "description": "Ecological forecasting models and data"
  },
  "_downloads": {
    "count": 910,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/reproducible"
  },
  "_mentions": 1,
  "_devurl": "https://github.com/predictiveecology/reproducible",
  "_pkgdown": "https://reproducible.predictiveecology.org",
  "_searchresults": 116,
  "_rbuild": "4.6.1",
  "_assets": [
    "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",
    "extra/reproducible.html"
  ],
  "_homeurl": "https://github.com/predictiveecology/reproducible",
  "_realowner": "predictiveecology",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2017-08-05"
    },
    {
      "version": "0.1.2",
      "date": "2017-08-09"
    },
    {
      "version": "0.1.3",
      "date": "2017-08-10"
    },
    {
      "version": "0.1.4",
      "date": "2018-01-25"
    },
    {
      "version": "0.2.0",
      "date": "2018-06-17"
    },
    {
      "version": "0.2.1",
      "date": "2018-07-07"
    },
    {
      "version": "0.2.2",
      "date": "2018-08-01"
    },
    {
      "version": "0.2.3",
      "date": "2018-08-07"
    },
    {
      "version": "0.2.5",
      "date": "2018-11-16"
    },
    {
      "version": "0.2.6",
      "date": "2019-02-01"
    },
    {
      "version": "0.2.7",
      "date": "2019-03-08"
    },
    {
      "version": "0.2.8",
      "date": "2019-03-18"
    },
    {
      "version": "0.2.9",
      "date": "2019-07-09"
    },
    {
      "version": "0.2.10",
      "date": "2019-09-12"
    },
    {
      "version": "0.2.11",
      "date": "2019-11-19"
    },
    {
      "version": "1.0.0",
      "date": "2020-02-20"
    },
    {
      "version": "1.1.0",
      "date": "2020-05-15"
    },
    {
      "version": "1.1.1",
      "date": "2020-05-20"
    },
    {
      "version": "1.2.0",
      "date": "2020-08-03"
    },
    {
      "version": "1.2.1",
      "date": "2020-08-18"
    },
    {
      "version": "1.2.4",
      "date": "2020-12-07"
    },
    {
      "version": "1.2.6",
      "date": "2021-02-17"
    },
    {
      "version": "1.2.7",
      "date": "2021-05-28"
    },
    {
      "version": "1.2.8",
      "date": "2021-09-26"
    },
    {
      "version": "1.2.10",
      "date": "2022-08-17"
    },
    {
      "version": "1.2.11",
      "date": "2022-11-09"
    },
    {
      "version": "1.2.16",
      "date": "2022-12-22"
    },
    {
      "version": "2.0.2",
      "date": "2023-05-07"
    },
    {
      "version": "2.0.4",
      "date": "2023-05-31"
    },
    {
      "version": "2.0.5",
      "date": "2023-07-03"
    },
    {
      "version": "2.0.7",
      "date": "2023-08-07"
    },
    {
      "version": "2.0.8",
      "date": "2023-08-24"
    },
    {
      "version": "2.0.9",
      "date": "2023-11-09"
    },
    {
      "version": "2.0.10",
      "date": "2023-11-22"
    },
    {
      "version": "2.0.11",
      "date": "2024-03-30"
    },
    {
      "version": "2.0.12",
      "date": "2024-04-15"
    },
    {
      "version": "2.1.0",
      "date": "2024-05-30"
    },
    {
      "version": "2.1.2",
      "date": "2024-12-12"
    },
    {
      "version": "3.0.0",
      "date": "2026-01-08"
    },
    {
      "version": "3.1.0",
      "date": "2026-05-16"
    },
    {
      "version": "3.1.1",
      "date": "2026-05-18"
    },
    {
      "version": "3.2.0",
      "date": "2026-08-25"
    },
    {
      "version": "3.2.1",
      "date": "2026-08-25"
    }
  ],
  "_exports": [
    ".addChangedAttr",
    ".addTagsRepo",
    ".addTagsToOutput",
    ".cacheMessage",
    ".cacheMessageObjectToRetrieve",
    ".checkCacheRepo",
    ".file.move",
    ".filebackedPath",
    ".formalsNotInCurrentDots",
    ".grepSysCalls",
    ".isCRSany",
    ".isGridded",
    ".isMemoised",
    ".isSF",
    ".isSpat",
    ".isSpatialAny",
    ".isVector",
    ".objSizeWithTry",
    ".orderDotsUnderscoreFirst",
    ".preDigestByClass",
    ".prefix",
    ".prepareOutput",
    ".requireNamespace",
    ".robustDigest",
    ".setSubAttrInList",
    ".sortDotsUnderscoreFirst",
    ".suffix",
    ".tagsByClass",
    ".unwrap",
    ".updateTagsRepo",
    ".whereInStack",
    ".wrap",
    "asPath",
    "assessDataType",
    "basename2",
    "Cache",
    "CacheDBFile",
    "CacheDBTableName",
    "CacheDigest",
    "CacheGeo",
    "CacheGeoLedger",
    "CacheGeoRead",
    "CacheGeoWrite",
    "cacheId",
    "CacheIsACache",
    "CacheStorageDir",
    "CacheStoredFile",
    "CacheV2",
    "cc",
    "checkPath",
    "Checksums",
    "clearCache",
    "clearUrlLog",
    "coerce",
    "compareNA",
    "convertPaths",
    "convertRasterPaths",
    "Copy",
    "copyFile",
    "createCache",
    "cropInputs",
    "cropTo",
    "dataType2",
    "detectActiveCores",
    "extractFromCache",
    "Filenames",
    "fixErrors",
    "fixErrorsIn",
    "forgetCacheLookups",
    "gdalMask",
    "gdalProject",
    "gdalResample",
    "getRelative",
    "isUpdated",
    "keepCache",
    "linkOrCopy",
    "listGoogleDriveFolder",
    "listNamed",
    "loadFromCache",
    "logUrlAccess",
    "makeMemoisable",
    "makeRelative",
    "makeUrlRemap",
    "maskInputs",
    "maskTo",
    "maxFn",
    "mergeCache",
    "messageCache",
    "messageColoured",
    "messageDF",
    "messagePrepInputs",
    "messagePreProcess",
    "messageQuestion",
    "minFn",
    "movedCache",
    "nlayers2",
    "normPath",
    "normPathRel",
    "numCoresToUse",
    "objSize",
    "objSizeSession",
    "paddedFloatToChar",
    "padYears",
    "postProcess",
    "postProcessTerra",
    "postProcessTo",
    "prepInputs",
    "prepInputsLog",
    "prepInputsWithTiles",
    "prepopulateCacheAsync",
    "preProcess",
    "preProcessCheckURLs",
    "preProcessParams",
    "projectInputs",
    "projectTo",
    "purgeChecksums",
    "rasterRead",
    "remapFilenames",
    "reproducibleOptions",
    "retry",
    "rmFromCache",
    "searchFull",
    "searchFullEx",
    "set.randomseed",
    "showCache",
    "studyAreaName",
    "tempdir2",
    "tempfile2",
    "unmakeMemoisable",
    "updateFilenameSlots",
    "urlExists",
    "urlLog",
    "usesPointer",
    "values2",
    "whyNoCacheHit",
    "whyNoCacheHitOnce",
    "writeFuture",
    "writeOutputs",
    "writeTo"
  ],
  "_help": [
    {
      "page": "reproducible-package",
      "title": "The 'reproducible' package",
      "topics": [
        "reproducible-package",
        "reproducible"
      ]
    },
    {
      "page": "addTags",
      "title": "Add a Tag to a Cached Object in the Repository",
      "topics": [
        ".addTagsRepo",
        ".updateTagsRepo"
      ]
    },
    {
      "page": "debugCache",
      "title": "Attach debug info to return for Cache",
      "topics": [
        ".debugCache"
      ]
    },
    {
      "page": "dot-file.move",
      "title": "Move a file to a new location - Defunct - use 'hardLinkOrCopy'",
      "topics": [
        ".file.move"
      ]
    },
    {
      "page": "dotWrap",
      "title": "Deal with class for saving to and loading from Cache or Disk",
      "topics": [
        ".filebackedPath",
        ".unwrap",
        ".unwrap.data.table",
        ".unwrap.default",
        ".unwrap.environment",
        ".unwrap.list",
        ".unwrap.PackedSpatExtent2",
        ".unwrap.PackedSpatVector",
        ".unwrap.PackedSpatVector2",
        ".wrap",
        ".wrap.default",
        ".wrap.environment",
        ".wrap.list"
      ]
    },
    {
      "page": "isSpatial",
      "title": "Some spatial helper functions",
      "topics": [
        ".isCRSany",
        ".isGridded",
        ".isSF",
        ".isSpat",
        ".isSpatialAny",
        ".isVector",
        "isSpatial"
      ]
    },
    {
      "page": "dot-isMemoised",
      "title": "Evaluate whether a cacheId is memoised",
      "topics": [
        ".isMemoised"
      ]
    },
    {
      "page": "dot-objSizeWithTry",
      "title": "'lobstr::obj_size' with a 'try' to address issue #72",
      "topics": [
        ".objSizeWithTry"
      ]
    },
    {
      "page": "prefix",
      "title": "Add a prefix or suffix to the basename part of a file path",
      "topics": [
        ".prefix",
        ".suffix",
        "suffix"
      ]
    },
    {
      "page": "prepareFileBackedRaster",
      "title": "Copy the file-backing of a file-backed Raster* object",
      "topics": [
        ".prepareFileBackedRaster"
      ]
    },
    {
      "page": "dot-removeCacheAtts",
      "title": "Remove attributes that are highly varying",
      "topics": [
        ".removeCacheAtts"
      ]
    },
    {
      "page": "dot-requireNamespace",
      "title": "Provide standard messaging for missing package dependencies",
      "topics": [
        ".requireNamespace"
      ]
    },
    {
      "page": "setSubAttrInList",
      "title": "Set subattributes within a list by reference",
      "topics": [
        ".setSubAttrInList"
      ]
    },
    {
      "page": "dot-whereInStack",
      "title": "Search for objects in the call stack",
      "topics": [
        ".whereInStack"
      ]
    },
    {
      "page": "assessDataType",
      "title": "Assess the appropriate raster layer data type",
      "topics": [
        "assessDataType",
        "assessDataType.default"
      ]
    },
    {
      "page": "basename2",
      "title": "A version of 'base::basename' that is 'NULL' resistant",
      "topics": [
        "basename2"
      ]
    },
    {
      "page": "Cache",
      "title": "Saves a wide variety function call outputs to disk and optionally RAM, for recovery later",
      "topics": [
        "Cache",
        "cache2",
        "CacheV2"
      ]
    },
    {
      "page": "CacheDigest",
      "title": "The exact digest function that 'Cache' uses",
      "topics": [
        "CacheDigest"
      ]
    },
    {
      "page": "CacheGeoLedger",
      "title": "A ledger of spatial rows, shared through a folder or Google Drive",
      "topics": [
        "CacheGeo",
        "CacheGeoLedger",
        "CacheGeoRead",
        "CacheGeoWrite"
      ]
    },
    {
      "page": "cacheId",
      "title": "Extract the cache id of an object",
      "topics": [
        "cacheId"
      ]
    },
    {
      "page": "checkPath",
      "title": "Check directory path",
      "topics": [
        "checkPath",
        "checkPath,character,logical-method",
        "checkPath,character,missing-method",
        "checkPath,missing,ANY-method",
        "checkPath,NULL,ANY-method"
      ]
    },
    {
      "page": "checkRelative",
      "title": "An alternative to 'basename' and 'dirname' when there are sub-folders",
      "topics": [
        "checkRelative"
      ]
    },
    {
      "page": "Checksums",
      "title": "Calculate checksum",
      "topics": [
        "Checksums",
        "Checksums,character,logical-method",
        "Checksums,character,missing-method"
      ]
    },
    {
      "page": "cloudDownload",
      "title": "Download from cloud, if necessary",
      "topics": [
        "cloudDownload"
      ]
    },
    {
      "page": "compareNA",
      "title": "'NA'-aware comparison of two vectors",
      "topics": [
        "compareNA"
      ]
    },
    {
      "page": "convertCallToCommonFormat",
      "title": "Convert all ways of calling a function into canonical form, including defaults",
      "topics": [
        "convertCallToCommonFormat"
      ]
    },
    {
      "page": "convertPaths",
      "title": "Change the absolute path of a file",
      "topics": [
        "convertPaths",
        "convertRasterPaths"
      ]
    },
    {
      "page": "Copy",
      "title": "Recursive copying of nested environments, and other \"hard to copy\" objects",
      "topics": [
        "Copy",
        "Copy,ANY-method",
        "Copy,data.frame-method",
        "Copy,data.table-method",
        "Copy,list-method",
        "Copy,refClass-method"
      ]
    },
    {
      "page": "copyFile",
      "title": "Copy a file using 'robocopy' on Windows and 'rsync' on Linux/macOS",
      "topics": [
        "copyFile",
        "copySingleFile"
      ]
    },
    {
      "page": "CacheHelpers",
      "title": "Low-level functions to create and work with a cache",
      "topics": [
        "CacheDBFile",
        "CacheDBTableName",
        "CacheIsACache",
        "CacheStorageDir",
        "CacheStoredFile",
        "createCache",
        "extractFromCache",
        "loadFromCache",
        "rmFromCache"
      ]
    },
    {
      "page": "detectActiveCores",
      "title": "Count Active Threads Based on CPU Usage",
      "topics": [
        "detectActiveCores"
      ]
    },
    {
      "page": "determineFilename",
      "title": "Determine filename, either automatically or manually",
      "topics": [
        "determineFilename"
      ]
    },
    {
      "page": "downloadRemote",
      "title": "Download a remote file",
      "topics": [
        "downloadRemote"
      ]
    },
    {
      "page": "extractFromArchive",
      "title": "Extract files from archive",
      "topics": [
        "extractFromArchive"
      ]
    },
    {
      "page": "Filenames",
      "title": "Return the filename(s) from a Raster* object",
      "topics": [
        "Filenames",
        "Filenames,ANY-method",
        "Filenames,data.table-method",
        "Filenames,environment-method",
        "Filenames,list-method",
        "Filenames,Path-method"
      ]
    },
    {
      "page": "fixErrorsIn",
      "title": "Fix common errors in GIS layers, using 'terra'",
      "topics": [
        "fixErrorsIn"
      ]
    },
    {
      "page": "forgetCacheLookups",
      "title": "Forget what 'whyNoCacheHit()' has read from a repository this session",
      "topics": [
        "forgetCacheLookups"
      ]
    },
    {
      "page": "gdalwarpFns",
      "title": "3-Step postProcess sequence for SpatRasters using 'gdalwarp'",
      "topics": [
        "gdalMask",
        "gdalProject",
        "gdalResample"
      ]
    },
    {
      "page": "relativePaths",
      "title": "Relative paths",
      "topics": [
        "getRelative",
        "makeRelative"
      ]
    },
    {
      "page": "harmonizeCall",
      "title": "Harmonize all forms of call",
      "topics": [
        "harmonizeCall"
      ]
    },
    {
      "page": "isUpdated",
      "title": "Has a cached object has been updated?",
      "topics": [
        "isUpdated"
      ]
    },
    {
      "page": "keepOrigGeom",
      "title": "Keep original geometries of 'sf' objects",
      "topics": [
        "keepOrigGeom"
      ]
    },
    {
      "page": "linkOrCopy",
      "title": "Hardlink, symlink, or copy a file",
      "topics": [
        "linkOrCopy"
      ]
    },
    {
      "page": "listGoogleDriveFolder",
      "title": "List a Google Drive folder, using a mirror listing when remapped",
      "topics": [
        "listGoogleDriveFolder"
      ]
    },
    {
      "page": "listNamed",
      "title": "Create a list with names from object names",
      "topics": [
        "listNamed"
      ]
    },
    {
      "page": "makeUrlRemap",
      "title": "Build a URL remap function from a manifest",
      "topics": [
        "makeUrlRemap"
      ]
    },
    {
      "page": "matchCall2",
      "title": "Remove 'quote' and determine if call uses '...'",
      "topics": [
        "matchCall2"
      ]
    },
    {
      "page": "mergeCache",
      "title": "Merge two cache repositories together",
      "topics": [
        "mergeCache",
        "mergeCache,ANY-method"
      ]
    },
    {
      "page": "messageColoured",
      "title": "Use 'message' with a consistent use of 'verbose'",
      "topics": [
        ".messageFunctionFn",
        "messageCache",
        "messageColoured",
        "messageDF",
        "messagePrepInputs",
        "messagePreProcess",
        "messageQuestion"
      ]
    },
    {
      "page": "terra-migration",
      "title": "Get min or maximum value of a (Spat)Raster",
      "topics": [
        "dataType2",
        "maxFn",
        "minFn",
        "nlayers2",
        "values2"
      ]
    },
    {
      "page": "movedCache",
      "title": "Deal with moved cache issues",
      "topics": [
        "movedCache"
      ]
    },
    {
      "page": "normPath",
      "title": "Normalize file paths",
      "topics": [
        "normPath",
        "normPath,character-method",
        "normPath,list-method",
        "normPath,logical-method",
        "normPath,missing-method",
        "normPath,NULL-method",
        "normPathRel"
      ]
    },
    {
      "page": "numCoresToUse",
      "title": "Estimate Number of CPU Cores to Use for Parallel Processing",
      "topics": [
        "numCoresToUse"
      ]
    },
    {
      "page": "objSize",
      "title": "Wrapper around 'lobstr::obj_size'",
      "topics": [
        "objSize",
        "objSizeSession"
      ]
    },
    {
      "page": "paddedFloatToChar",
      "title": "Convert numeric to character with padding",
      "topics": [
        "paddedFloatToChar"
      ]
    },
    {
      "page": "padYears",
      "title": "Pad a pair of start and end years to a common width",
      "topics": [
        "padYears"
      ]
    },
    {
      "page": "Path-class",
      "title": "Coerce a character string to a class \"Path\"",
      "topics": [
        "asPath",
        "asPath.character",
        "asPath.NULL",
        "coerce,character,Path-method",
        "Path-class"
      ]
    },
    {
      "page": "postProcess",
      "title": "Generic function to post process objects",
      "topics": [
        "postProcess",
        "postProcess.default",
        "postProcess.list"
      ]
    },
    {
      "page": "postProcessInputsSuperseded",
      "title": "Superseded 'postProcess' input functions",
      "topics": [
        "cropInputs",
        "cropInputs.default",
        "maskInputs",
        "maskInputs.default",
        "postProcessInputsSuperseded",
        "projectInputs",
        "projectInputs.default"
      ]
    },
    {
      "page": "postProcessTo",
      "title": "Transform a GIS dataset so it has the properties (extent, projection, mask) of another",
      "topics": [
        "cropTo",
        "maskTo",
        "postProcessTerra",
        "postProcessTo",
        "projectTo",
        "writeTo"
      ]
    },
    {
      "page": "prepInputs",
      "title": "Download and optionally post-process files",
      "topics": [
        "prepInputs"
      ]
    },
    {
      "page": "prepInputsLog",
      "title": "The download ledger: a record of the data a run read from outside",
      "topics": [
        "clearUrlLog",
        "logUrlAccess",
        "prepInputsLog"
      ]
    },
    {
      "page": "prepInputsWithTiles",
      "title": "Alternative to 'prepInputs' that can use Spatial Tiles stored locally or on Google Drive",
      "topics": [
        "prepInputsWithTiles"
      ]
    },
    {
      "page": "prepopulateCacheAsync",
      "title": "Pre-populate the in-memory 'showCache' cache for a given 'cachePath'",
      "topics": [
        "prepopulateCacheAsync"
      ]
    },
    {
      "page": "preProcessCheckURLs",
      "title": "Check downloaded files against their remote sources",
      "topics": [
        "preProcessCheckURLs"
      ]
    },
    {
      "page": "preProcess",
      "title": "Download, checksum, extract files",
      "topics": [
        "preProcess",
        "preProcessParams"
      ]
    },
    {
      "page": "purgeChecksums",
      "title": "Purge the checksums of a single file",
      "topics": [
        "purgeChecksums"
      ]
    },
    {
      "page": "rasterRead",
      "title": "A helper to 'getOption(\"reproducible.rasterRead\")'",
      "topics": [
        "rasterRead"
      ]
    },
    {
      "page": "remapFilenames",
      "title": "Remap file names",
      "topics": [
        "remapFilenames"
      ]
    },
    {
      "page": "reproducibleOptions",
      "title": "'reproducible' options",
      "topics": [
        "reproducibleOptions"
      ]
    },
    {
      "page": "retry",
      "title": "A wrapper around 'try' that retries on failure",
      "topics": [
        "retry"
      ]
    },
    {
      "page": "saveToCache",
      "title": "Save an object to Cache",
      "topics": [
        "saveToCache"
      ]
    },
    {
      "page": "search",
      "title": "Search up the full scope for functions",
      "topics": [
        "searchFull",
        "searchFullEx"
      ]
    },
    {
      "page": "set.randomseed",
      "title": "Set seed with a random value using Sys.time()",
      "topics": [
        "set.randomseed"
      ]
    },
    {
      "page": "viewCache",
      "title": "Examining and modifying the cache",
      "topics": [
        "cc",
        "clearCache",
        "clearCache,ANY-method",
        "keepCache",
        "keepCache,ANY-method",
        "showCache",
        "showCache,ANY-method"
      ]
    },
    {
      "page": "studyAreaName",
      "title": "Get a unique name for a given study area",
      "topics": [
        "studyAreaName",
        "studyAreaName,ANY-method",
        "studyAreaName,character-method"
      ]
    },
    {
      "page": "tempdir2",
      "title": "Make a temporary (sub-)directory",
      "topics": [
        "tempdir2"
      ]
    },
    {
      "page": "tempfile2",
      "title": "Make a temporary file in a temporary (sub-)directory",
      "topics": [
        "tempfile2"
      ]
    },
    {
      "page": "unrarPath",
      "title": "The known path for unrar or 7z",
      "topics": [
        ".systemArchivePath",
        "unrarPath"
      ]
    },
    {
      "page": "urlLog",
      "title": "The URL ledger kept in a cache",
      "topics": [
        "urlLog",
        "urlLog.default"
      ]
    },
    {
      "page": "usesPointer",
      "title": "Does an object use a pointer?",
      "topics": [
        "usesPointer"
      ]
    },
    {
      "page": "whyNoCacheHit",
      "title": "Why did this call not reuse the cache, and what changed?",
      "topics": [
        "print.cacheDryRun",
        "print.whyNoCacheHit",
        "whyNoCacheHit"
      ]
    },
    {
      "page": "whyNoCacheHitOnce",
      "title": "Report on the next cache miss that looks accidental, once",
      "topics": [
        "whyNoCacheHitOnce"
      ]
    },
    {
      "page": "writeFuture",
      "title": "Write to cache repository, using 'future::future' (defunct)",
      "topics": [
        "writeFuture"
      ]
    }
  ],
  "_readme": "https://github.com/PredictiveEcology/reproducible/raw/development/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "crayon",
    "data.table",
    "digest",
    "filelock",
    "fpCompare",
    "fs",
    "lifecycle",
    "lobstr",
    "prettyunits",
    "rlang"
  ],
  "_vignettes": [
    {
      "source": "Intro-to-Cache.Rmd",
      "filename": "Intro-to-Cache.html",
      "title": "Introduction to Cache",
      "author": "Eliot J. B. McIntire",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Sharing a ledger of spatial results through Google Drive",
        "Reproducible workflow",
        "Differences with other approaches",
        "Function-level caching",
        "Caching examples",
        "Basic use",
        "Example 1: Basic cache use with tags",
        "Example 2: using the \"accessed\" tag",
        "Example 3: using keepCache",
        "Example 4: searching for multiple objects in the cache",
        "Example 5: using caching to speed up rerunning expensive computations",
        "Nested Caching",
        "cacheId",
        "Working with the Cache manually",
        "Alternative database backends"
      ],
      "created": "2018-06-14 01:13:22",
      "modified": "2026-10-07 00:10:02",
      "commits": 16
    }
  ],
  "_score": 10.123869926665575,
  "_indexed": true,
  "_nocasepkg": "reproducible",
  "_universes": [
    "predictiveecology"
  ],
  "_previous": "3.2.1.9071",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:07:20.000Z",
      "distro": "resolute",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/e4c867bcc80e231591b0a1cba9ae7653c233adb89f4bc0b0906644a674ce620d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:08:03.000Z",
      "distro": "resolute",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/b798fcc40ee4809b4444df691ecfab7f6078da52306403ebb9139fc064f1ffa7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:06:43.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/468dbe626d07bea88ebf0ffdd01b7975658faa5d1134c8e056b9a4c209e53ec0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:07:00.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/c77f7ddd475783575efdc63495170fd52f6288308cfe89d7d55add9c5a73d4bf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:07:23.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/a799f80ba60683c9ba352431748e31ff1f0802b3d65664f093b3c0239d74eb38",
      "status": "success",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:06:22.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/01304bf780525c64cd60e89ce527df532106054393ebadb3365019d464bfad95",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:06:27.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/563a5dec335b64064ffb68dcec95d30c0a4ea6190dc80edd1c8cde8d1c09b2b8",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "3.2.1.9072",
      "date": "2026-10-15T06:06:57.000Z",
      "commit": "8d52c58249b3d2f348ef1cdd121d808e50f3db59",
      "fileid": "https://r2.ropensci.org/e9e476438a6fe95fd8197254b46fca5b5524afb88e6463d8e17f0f7c509ea04a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/predictiveecology/actions/runs/38689989296"
    }
  ]
}