This 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)
Arguments
object |
an object to digest. |
.objects |
Character vector of objects to be digested. This is only applicable
if there is a list, environment (or similar) with 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. In the case of nested list-type
objects, this will only be applied outermost first. |
length |
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 . |
algo |
The algorithms to be used; currently available choices are
md5 , which is also the default, sha1 , crc32 ,
sha256 , sha512 , xxhash32 , xxhash64 ,
murmur32 , spookyhash and blake3 . |
quick |
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. |
classOptions |
Optional list. This will pass into .robustDigest for
specific classes. Should be options that the .robustDigest knows what
to do with. |
Details
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.
See also
Author
Eliot McIntire