{
  "_id": "6acca5bea14063b82c3a7521",
  "Package": "memofunc",
  "Type": "Package",
  "Title": "Programmable Function Memoization for R",
  "Version": "1.0.3",
  "Authors@R": "person(given = \"Roy\",\nfamily = \"Wetherall\",\nrole = c(\"aut\", \"cre\"),\nemail = \"rwetherall@gmail.com\")",
  "Description": "Memoize R functions with explicit, predictable cache\nbehavior. Function calls become reusable memory: repeated\ncomputations return quickly, while cache keys remain\ntransparent and deterministic. Keys are derived from function\nidentity and normalized call arguments, so implementation\nchanges naturally invalidate stale values. Includes runtime\ncontrols for forced recomputation and dry-run cache checks,\nplus pluggable storage backends for in-memory, local file, and\nprovider-backed object storage.",
  "License": "GPL-3",
  "URL": "https://github.com/rwetherall/memofunc,\nhttps://rwetherall.github.io/memofunc/",
  "BugReports": "https://github.com/rwetherall/memofunc/issues",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "Repository": "https://rwetherall.r-universe.dev",
  "Date/Publication": "2026-04-15 09:04:10 UTC",
  "RemoteUrl": "https://github.com/rwetherall/memofunc",
  "RemoteRef": "HEAD",
  "RemoteSha": "204a9841366d994b94a3d6e3e37eaa3472756100",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-12 09:13:54 UTC",
    "User": "root"
  },
  "Author": "Roy Wetherall [aut, cre]",
  "Maintainer": "Roy Wetherall <rwetherall@gmail.com>",
  "_user": "rwetherall",
  "_type": "src",
  "_file": "memofunc_1.0.3.tar.gz",
  "_fileid": "https://r2.ropensci.org/50d4a589e1a685797eba22fafea8fb83b2aae7334bb578ec17b6431fb5060f1b",
  "_filesize": 191214,
  "_sha256": "50d4a589e1a685797eba22fafea8fb83b2aae7334bb578ec17b6431fb5060f1b",
  "_expires": "2027-01-20T09:17:48.000Z",
  "_created": "2026-10-12T09:13:54.000Z",
  "_published": "2026-10-12T09:17:50.676Z",
  "_buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 114742072340,
      "time": 124,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11738175706"
    },
    {
      "job": 114742072392,
      "time": 169,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11737302353"
    },
    {
      "job": 114742072294,
      "time": 175,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11738026468"
    },
    {
      "job": 114742072388,
      "time": 194,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11738076038"
    },
    {
      "job": 114740955116,
      "time": 184,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11737166935"
    },
    {
      "job": 114742072172,
      "time": 109,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11737227218"
    },
    {
      "job": 114742072419,
      "time": 82,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11738345275"
    },
    {
      "job": 114742072440,
      "time": 113,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11738165726"
    },
    {
      "job": 114742072428,
      "time": 102,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11737501901"
    }
  ],
  "_upstream": "https://github.com/rwetherall/memofunc",
  "_commit": {
    "id": "204a9841366d994b94a3d6e3e37eaa3472756100",
    "author": "Roy Wetherall <rwetherall@gmail.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #24 from rwetherall/issue-11-invalidation-helpers\n\n#11 Add per-function invalidation helpers",
    "time": 1776243850
  },
  "_maintainer": {
    "name": "Roy Wetherall",
    "email": "rwetherall@gmail.com",
    "login": "rwetherall",
    "description": "R programming enthusiast.",
    "uuid": 1633054
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "digest",
      "role": "Imports"
    },
    {
      "package": "uuid",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "devtools",
      "role": "Suggests"
    },
    {
      "package": "roxygen2",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "AzureStor",
      "role": "Suggests"
    }
  ],
  "_owner": "rwetherall",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-16",
      "n": 9
    }
  ],
  "_tags": [],
  "_topics": [
    "cache",
    "memoization"
  ],
  "_stars": 3,
  "_contributors": [
    {
      "user": "rwetherall",
      "count": 148,
      "uuid": 1633054
    },
    {
      "user": "roywetherall",
      "count": 22,
      "uuid": 5580742
    }
  ],
  "_userbio": {
    "uuid": 1633054,
    "type": "user",
    "name": "Roy Wetherall",
    "followers": 23,
    "description": "R programming enthusiast."
  },
  "_downloads": {
    "count": 229,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/memofunc"
  },
  "_devurl": "https://github.com/rwetherall/memofunc",
  "_pkgdown": "https://rwetherall.github.io/memofunc/",
  "_searchresults": 1,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/memofunc.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_homeurl": "https://github.com/rwetherall/memofunc",
  "_realowner": "rwetherall",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.2",
      "date": "2021-02-22"
    }
  ],
  "_exports": [
    "functionCall",
    "hash",
    "invalidate",
    "is.memo",
    "memo",
    "memo.cache",
    "memo.function",
    "storage.clear",
    "storage.get",
    "storage.has",
    "storage.init",
    "storage.set",
    "storage.unset"
  ],
  "_help": [
    {
      "page": "functionCall",
      "title": "Function Call",
      "topics": [
        "functionCall"
      ]
    },
    {
      "page": "hash",
      "title": "Hash",
      "topics": [
        "hash"
      ]
    },
    {
      "page": "hash.default",
      "title": "Hash",
      "topics": [
        "hash.default"
      ]
    },
    {
      "page": "hash.function",
      "title": "Hash",
      "topics": [
        "hash.function"
      ]
    },
    {
      "page": "hash.functionCall",
      "title": "Hash",
      "topics": [
        "hash.functionCall"
      ]
    },
    {
      "page": "hash.list",
      "title": "Hash",
      "topics": [
        "hash.list"
      ]
    },
    {
      "page": "invalidate",
      "title": "Invalidate Memo",
      "topics": [
        "invalidate"
      ]
    },
    {
      "page": "is.memo",
      "title": "Is Memo",
      "topics": [
        "is.memo"
      ]
    },
    {
      "page": "memo",
      "title": "Memo",
      "topics": [
        "memo"
      ]
    },
    {
      "page": "memo.cache",
      "title": "Memo Cache",
      "topics": [
        "memo.cache"
      ]
    },
    {
      "page": "memo.function",
      "title": "Memo Function",
      "topics": [
        "memo.function"
      ]
    },
    {
      "page": "storage.clear",
      "title": "Clear the storage.",
      "topics": [
        "storage.clear"
      ]
    },
    {
      "page": "storage.clear.memory",
      "title": "Clear the memory store.",
      "topics": [
        "storage.clear.memory"
      ]
    },
    {
      "page": "storage.clear.object",
      "title": "Clear the object store.",
      "topics": [
        "storage.clear.object"
      ]
    },
    {
      "page": "storage.get",
      "title": "Get value from a store.",
      "topics": [
        "storage.get"
      ]
    },
    {
      "page": "storage.get.memory",
      "title": "Get a value from a memory store.",
      "topics": [
        "storage.get.memory"
      ]
    },
    {
      "page": "storage.get.object",
      "title": "Get a value from an object store.",
      "topics": [
        "storage.get.object"
      ]
    },
    {
      "page": "storage.has",
      "title": "Has key has been used to store a value?",
      "topics": [
        "storage.has"
      ]
    },
    {
      "page": "storage.has.memory",
      "title": "Has key has been used to store a value in a memory store?",
      "topics": [
        "storage.has.memory"
      ]
    },
    {
      "page": "storage.has.object",
      "title": "Has key has been used to store a value in an object store?",
      "topics": [
        "storage.has.object"
      ]
    },
    {
      "page": "storage.init",
      "title": "Initialize a store.",
      "topics": [
        "storage.init"
      ]
    },
    {
      "page": "storage.init.memory",
      "title": "Initialize a memory store.",
      "topics": [
        "storage.init.memory"
      ]
    },
    {
      "page": "storage.init.object",
      "title": "Initialize an object store.",
      "topics": [
        "storage.init.object"
      ]
    },
    {
      "page": "storage.set",
      "title": "Set value into a store.",
      "topics": [
        "storage.set"
      ]
    },
    {
      "page": "storage.set.memory",
      "title": "Set value into a memory store.",
      "topics": [
        "storage.set.memory"
      ]
    },
    {
      "page": "storage.set.object",
      "title": "Set value into an object store.",
      "topics": [
        "storage.set.object"
      ]
    },
    {
      "page": "storage.unset",
      "title": "Unset a value that corresponds to a key within a store.",
      "topics": [
        "storage.unset"
      ]
    },
    {
      "page": "storage.unset.memory",
      "title": "Unset a value that corresponds to a key within a memory store.",
      "topics": [
        "storage.unset.memory"
      ]
    },
    {
      "page": "storage.unset.object",
      "title": "Unset a value that corresponds to a key within an object store.",
      "topics": [
        "storage.unset.object"
      ]
    }
  ],
  "_readme": "https://github.com/rwetherall/memofunc/raw/HEAD/README.md",
  "_rundeps": [
    "digest",
    "magrittr",
    "uuid"
  ],
  "_score": 3.1760912590556813,
  "_indexed": true,
  "_nocasepkg": "memofunc",
  "_universes": [
    "rwetherall"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.3",
      "date": "2026-10-12T09:16:02.000Z",
      "distro": "resolute",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/d09e5ebdba7b9e04554b5e9d57bd621729d47a0f72ccb13d0dbf578e009071a2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.3",
      "date": "2026-10-12T09:16:44.000Z",
      "distro": "resolute",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/ca92bdfde41b24f9d909634a6de430a5dabf3a49e26f1ad2777f2e0ca849dd48",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.3",
      "date": "2026-10-12T09:16:25.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/d82907aeb317a1b09f92d9d2cfddca653f7f774dba8a6ef8af45e668b5f22f27",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.0.3",
      "date": "2026-10-12T09:16:30.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/07f456349fbd5eb4c05fc07e3dbd68dbb2894fe1c355cf53464ff63f695ce0f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.3",
      "date": "2026-10-12T09:15:58.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/5f9cd931635b2d557712a55f3855cbb809512553c9b60bdf2a072eea4d6efee9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-10-12T09:15:13.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/66b4c9251b15608092eb2dbdd44827cd4a8719c531e2e11a6beae6fedd948d9e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-10-12T09:15:45.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/90c518212c3734d1d4756184efe9b65ec2680376195fe352c3a609e4f5d35175",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-10-12T09:15:33.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "https://r2.ropensci.org/fcb1b11d93209792b998443eedb42b0d68afde8ab364298c1e9ce1b162481230",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/38228199110"
    }
  ]
}