{
  "_id": "6a1f2fc4b401979e734275f3",
  "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-05-15 09:06:26 UTC",
    "User": "root"
  },
  "Author": "Roy Wetherall [aut, cre]",
  "Maintainer": "Roy Wetherall <rwetherall@gmail.com>",
  "MD5sum": "9ef90537ff54b6f858a41e593af8347f",
  "_user": "rwetherall",
  "_type": "src",
  "_file": "memofunc_1.0.3.tar.gz",
  "_fileid": "04c158483b2d587268608cdcbe8e4dcfa92d15f397e85546b041e421c93ed8bf",
  "_filesize": 194958,
  "_sha256": "04c158483b2d587268608cdcbe8e4dcfa92d15f397e85546b041e421c93ed8bf",
  "_created": "2026-05-15T09:06:26.000Z",
  "_published": "2026-06-02T19:32:20.094Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79155254496,
      "time": 112,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7013710516"
    },
    {
      "job": 79155254418,
      "time": 134,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7013716604"
    },
    {
      "job": 79155255613,
      "time": 146,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7013711746"
    },
    {
      "job": 79155254589,
      "time": 161,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7013714881"
    },
    {
      "job": 79155254134,
      "time": 170,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7013677936"
    },
    {
      "job": 79155254024,
      "time": 113,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7367839599"
    },
    {
      "job": 79155255318,
      "time": 77,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7013700542"
    },
    {
      "job": 79155255383,
      "time": 101,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7013709063"
    },
    {
      "job": 79155254859,
      "time": 81,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7013701886"
    }
  ],
  "_buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_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",
    "uuid": 1633054
  },
  "_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": 2,
  "_contributors": [
    {
      "user": "rwetherall",
      "count": 148,
      "uuid": 1633054
    },
    {
      "user": "roywetherall",
      "count": 22,
      "uuid": 5580742
    }
  ],
  "_userbio": {
    "uuid": 1633054,
    "type": "user",
    "name": "Roy Wetherall",
    "description": "R programming enthusiast."
  },
  "_downloads": {
    "count": 160,
    "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.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/memofunc.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_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,
  "_indexed": true,
  "_nocasepkg": "memofunc",
  "_universes": [
    "rwetherall"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.3",
      "date": "2026-05-15T09:08:23.000Z",
      "distro": "noble",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "5b3da60c2a776ad97ce3a1586288f822831aea702b066a0875edfa2b74c5a196",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.3",
      "date": "2026-05-15T09:08:43.000Z",
      "distro": "noble",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "946a4729a1d03d6b93f86f92de5b856b58450a10ac81097b52da758e2a593ded",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.3",
      "date": "2026-05-15T09:08:29.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "b59b48db2abf7a08299d315a7dd9c46e3e0ef340227b687be2430126ca7fce1b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.3",
      "date": "2026-05-15T09:08:38.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "92135bc212c91fa57d75ff588b7015bf62f601fc6692b5a9e0fcc5b8bd07ab2d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-05-15T09:07:40.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "db8675b28c3d3c52d517e2c1cbc56472a0b209781de7552c9f8aac8dc057faa0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-05-15T09:08:11.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "049c303eb6fe79c013cea6a5555765ce00f1893b9de26d3a116601a704aa9c66",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.3",
      "date": "2026-05-15T09:07:45.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "cb898a16865a11036aa102acea5ecb221da28484036d5aa9ec1ad004f962cfe3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.3",
      "date": "2026-06-02T19:31:55.000Z",
      "commit": "204a9841366d994b94a3d6e3e37eaa3472756100",
      "fileid": "545f1d5c7e6170bde2fef7c23866b664cda7df086f7c079d47d948702d2c4fc7",
      "status": "success",
      "buildurl": "https://github.com/r-universe/rwetherall/actions/runs/25909577927"
    }
  ]
}