loadDataFile()
function now includes a
priority
argument so that either dataUrl
or
dataDir
can be prioritized with the other as a backup if
initial loading of data fails.initializeLogging()
now creates a WARN.log
file to complete the suite of TRACE
, DEBUG
,
INFO
, WARN
and ERROR
.precision
argument to
createLocationID()
.initializeLogging()
now properly uses
filePrefix
argument.timeStamp()
function now defaults to
lubridate::now("UTC")
when no datetime
is
provided. This supports common use cases such as:> timeStamp(unit = "hour")
[1] "2023102618"
> timeStamp(style = "clock")
[1] "2023-10-26T18:25:55"
WARN [2023-08-29 14:06:58] Oops: object 'flog.appender' not found
createLocationMask()
to identify invalid
locations.createLocationID()
now defaults to
algorithm = "geohash"
.createLocationID()
now returns the user specified
invalidID
for invalid locations rather than stopping with
an error message.algorithm
argument to
createLocationID()
to select between “digest” and
“geohash”.The “geohash” algorithm is preferred but the “digest” algorithm is retained (and the default) because several existing databases use the “digest” algorithm as a unique identifier.
stopOnError()
function documentation and
associated vignette.stopOnError()
with the following additional
arguments: prefix
, code
,
maxLength
, truncatedLength
,
call.
.timeStamp()
.html_getLinks()
and
html_getTables()
to explain any errors with:
try({ ...}, silent = FALSE)
.getAPIKey()
,
setAPIKey()
, showAPIKeys()
.futile.logger::flog.layout()
to avoid
downstream complaints.html_getLinks()
and
html_getTables()
now fail gracefully.local_~/
directories. (Not part of
the R package.)filePrefix
and createDir
arguments
to initializeLogging()
.validateLonLat()
,
validateLonsLats()
and
createLocationID()
.dateRange()
when creating single day date
ranges."ymdThms"
format to
timeStamp()
."msec"
unit option to
timestamp()
.html_getTable()
to not disregard the
index
parameter.check_~()
functions to use
devtools::check()
manual
and
run_dont_test
arguments.header
option to html_getLinks()
and
html_getTables()
functions.html_getLinks()
and
html_getTables()
functions.futile.logger::flog.layout()
to avoid
downstream complaints.check_~()
functions.loadDataFile()
.ceilingStart
argument to dateRange()
and timeRange()
.dateRange()
.This version address a few issues encountered while using 0.3.11 in production.
timeStamp()
function creates character timestamps
useful for labeling.dateSequence()
function generates a sequence of
POSIXct
values that align with midnight local time even
through the switch to/from daylight savings.loadDataFile()
function supports loading data from
local directories or URLs.parseDatetime()
when parsing
julian dates.parsDatetime()
argument julian
to
isJulian
.stopIfNull()
and setIfNull()
now issue
stop(...)
messages with call. = TRUE
so that
the stack information bubbles up.futile.logger::flog.logger()
to avoid
downstream complaints.timezoneLintrules
.parseDatetime()
now supports YYYY and YYYYmm
formats.julian
argument to parseDatetime()
to support Julian day formats.Added a suite of functions to easily run
devtools::check()
with different arguments: *
check_fastest()
* check_faster()
*
check_fast()
* check()
*
check_slow()
* check_slower()
*
check_slowest()
timezoneLintRules
.logger.isInitialized()
for programmatic use.logger.setLevel()
now guarantees that
logger.setup()
has been called, fixing a bug that generated
multiple output messages when logger.setLevel()
was called
before logger.setup()
.timezoneLintRules
.More consistency improvements to dateRange()
. When
specified, the days
parameter now takes precedence over
ceilingEnd
when no enddate
is specified.
Fully self-consistent package using internal functions wherever possible.
Various improvements after usage in an operational setting:
timezoneLintRules
includes more date related
functions.quiet
argument to
parseDateTime()
.timeRange()
function now accepts unit
and
ceilingEnd
arguments.dateRange()
function now accepts
ceilingEnd
argument.The ceilingEnd
argument addresses the ambiguity of a
phrase like: “August 1-8”. With ceilingEnd = FALSE
(default) this pharse means “through the beginning of Aug 8”. With
ceilingEnd = TRUE
it means “through the end of Aug 8”.
This version adds new convenience functions for dealing with
NULL
values in pipeline flow control.
setIfNull()
stopIfNull()
In a lot of the data pipelines we build (web services, packages,
etc.), we need to deal with the possibility of NULL
inputs.
Setting a default value or throwing an error are two of the most common
ways NUll
values are dealt with. While the code to handle
this is straightforward to write, it is verbose and repetitive.
setIfNull()
and stopIfNull()
are designed to
abstract away boilerplate code, allowing us to focus on more important
things.
enddate
in
`dateRange().lintFunctionArgs_directory()
to
lintFunctionArgs_dir()
.fullPath
argument to linting functions.date-parsing
vignette.This version focuses on enhancing the time utility capabilities of MazamaCoreUtils.
lintFunctionArgs_file()
lintFunctionArgs_directory()
timeRange()
parseDatetime()
In order to ensure that we are working with timezones consistently,
the functions lintFunctionArgs_file()
and
lintFunctionArgs_directory()
were created to parse
R source files and determine if certain functions
contained specific named arguments, based on a set of rules. A set of
rules, timezoneLintRules
, was created to check that all
functions that accept a timezone have that argument explicitly fill,
avoiding inconsistent default behavior.
PWFSLSmoke::parseDatetime()
was moved into
MazamaCoreUtils so more packages can benefit from it without
importing the rest of PWFSLSmoke. Also,
timeRange()
was created to work as a function analogous to
dateRange()
, parsing time ranges instead of finding date
ranges.
As part of this consolidation, more unit tests were added to the package.
dateRange()
.dateRange()
no longer provides a default timezone.dateRange()
no longer alters POSIXct
inputsdateRange()
now has stricter argument checkingfutile.logger
from Depends
to
Imports
.Rproj
filedateRange()
function.error-handling
and
logging
.futile.logger not found
error messages.maxFileAge
parameter to
cacheManagement()
to help with removal of out-of-data
products.