.robustDigest
for simList
class objectsThis is intended to be used within the Cache
function, but can be
used to evaluate what a simList
would look like once it is
converted to a repeatably digestible object.
# S4 method for simList
.robustDigest(object, .objects, length, algo, quick,
classOptions)
an object to digest.
Character vector of objects to be digested. This is only applicable if there is a list, environment (or similar) named objects within it. Only this/these objects will be considered for caching, i.e., only use a subset of the list, environment or similar objects.
Numeric. If the element passed to Cache is a Path
class
object (from e.g., asPath(filename)
) or it is a Raster
with
file-backing, then this will be
passed to digest::digest
, essentially limiting the number of bytes
to digest (for speed). This will only be used if quick = FALSE
.
Default is getOption("reproducible.length")
,
which is set to Inf
.
The algorithms to be used; currently available choices are
md5
, which is also the default, sha1
, crc32
,
sha256
, sha512
, xxhash32
, xxhash64
and
murmur32
.
Logical. If TRUE
,
little or no disk-based information will be assessed, i.e., mostly its
memory content. This is relevant for objects of class character
,
Path
and Raster
currently. For class character
, it is ambiguous
whether this represents a character string or a vector of file paths. The function
will assess if it is a path to a file or directory first. If not, it will treat
the object as a character string. If it is known that character strings should
not be treated as paths, then quick = TRUE
will be much faster, with no loss
of information. If it is file or directory, then it will digest the file content,
or basename(object)
. For class Path
objects, the file's metadata
(i.e., filename and file size)
will be hashed instead of the file contents if quick = TRUE
.
If set to FALSE
(default),
the contents of the file(s) are hashed.
If quick = TRUE
, length
is ignored. Raster
objects are treated
as paths, if they are file-backed.
Optional list. This will pass into .robustDigest
for
specific classes. Should be options that the .robustDigest
knows what
to do with.
See robustDigest
. This method strips out stuff
from a simList class object that would make it otherwise not
reproducibly digestible between sessions, operating systems,
or machines. This will likely still not allow identical digest
results across R versions.