Releases: ropensci/targets
Releases · ropensci/targets
Improved Target Markdown, configurability, shortcutting, workspace/error flexibility
targets 0.6.0
Bug fixes
- Allow
tar_poll()
to lose and then regain connection to the progress file. - Make sure changes to the
tar_group
column ofiteration = "group"
data frames do not invalidate slices (#507, @lindsayplatt).
New features
- In Target Markdown, add a new
tar_interactive
global option to select interactive mode or non-interactive mode (#469). - Highlight a graph neighborhood when the user clicks a node. Control the neighborhood degree with new arguments
degree_from
anddegree_to
oftar_visnetwork()
andtar_glimpse()
(#474, @rgayler). - Make the target script path configurable in
tar_config_set()
(#476). - Add a
tar_script
chunk option in Target Markdown to control where the{targets}
language engine writes the target script and helper scripts (#478). - Add new arguments
script
andstore
to choose custom paths to the target script file and data store for individual function calls (#477). - Allow users to set an alternative path to the YAML configuration file for the current R session (#477). Most users have no reason to set this path, it is only for niche applications like Shiny apps with
targets
backends. Unavoidably, the path gets reset to_targets.yaml
when the session restarts. - Add new
_targets.yaml
config optionsreporter_make
,reporter_outdated
, andworkers
to control function argument defaults shared across multiple functions called outside_targets.R
(#498, @ianeveperry). - Add
tar_load_globals()
for debugging, testing, prototyping, and teaching (#496, @malcolmbarrett). - Add structure to the
resources
argument oftar_target()
to avoid conflicts among formats and HPC backends (#489). Includes user-side helper functions liketar_resources()
andtar_resources_aws()
to build the required data structures. - Log skipped targets in
_targets/meta/progress
and display then intar_progress()
,tar_poll()
,tar_watch()
,tar_progress_branches()
,tar_progress_summary()
, andtar_visnetwork()
(#514). Instead of writing each skip line separately to_targets/meta/progress
, accumulate skip lines in a queue and then write them all out in bulk when something interesting happens. This avoids a lot of overhead in certain cases. - Add a
shortcut
argument totar_make()
,tar_make_clustermq()
,tar_make_future()
,tar_outdated()
, andtar_sitrep()
to more efficiently skip parts of the pipeline (#522, #523, @jennysjaarda, @MilesMcBain, @kendonB). - Support
names
andshortcut
in graph data frames and graph visuals (#529). - Move
allow
andexclude
to the network behind the graph visuals rather than the visuals themselves (#529). - Add a new "progress" display to the
tar_watch()
app to show verbose progress info and metadata. - Add a new
workspace_on_error
argument oftar_option_set()
to supersedeerror = "workspace"
. Helps control workspace behavior independently of theerror
argument oftar_target()
(#405, #533, #534, @mattwarkentin, @xinstein). - Implement
error = "abridge"
intar_target()
and related functions. If a target errors out with this option, the target itself stops, any currently running targets keeps, and no new targets launch after that (#533, #534, @xinstein). - Add a menu prompt to
tar_destroy()
which can be suppressed withTAR_ASK = "false"
(#542, @gofford). - Support functions
tar_older()
andtar_newer()
to help users identify and invalidate targets at regular times or intervals.
Deprecations
- In Target Markdown, deprecate the
targets
chunk option in favor oftar_globals
(#469). - Deprecate
error = "workspace"
intar_target()
and related functions. Usetar_option_set(workspace_on_error = TRUE)
instead (#405, #533, @mattwarkentin, @xinstein).
Performance
- Reset the backoff upper bound when concluding a target or shutting down a
clustermq
worker (@rich-payne). - Set more aggressive default backoff bound of 0.1 seconds (previous: 5 seconds) and set a more aggressive minimum of 0.001 seconds (previous: 0.01 seconds) (@rich-payne).
- Speed up the summary and forecast reporters by only printing to the console every quarter second.
- Avoid superfluous calls to
store_sync_file_meta.default()
on small files. - In
tar_watch()
, take several measures to avoid long computation times rendering the graph:- Expose arguments
display
anddisplays
totar_watch()
so the user can select which display shows first. - Make
"summary"
the default display instead of"graph"
. - Set
outdated
toFALSE
by default.
- Expose arguments
Enhancements
- Simplify the Target Markdown example.
- Warn about unnamed chunks in Target Markdown.
- Redesign option system to be more object-oriented and rigorous. Also export most options to HPC workers (#475).
- Simplify config system to let API function arguments take control (#483).
- In
tar_read()
for targets withformat = "aws_file"
, download the file back to the path the user originally saved it when the target ran. - Replace the
TAR_MAKE_REPORTER
environment variable withtargets::tar_config_get("reporter_make")
. - Use
eval(parse(text = readLines("_targets.R")), envir = some_envir)
and related techniques instead of the less controllablesource()
. Expose anenvir
argument to many functions for further control over evaluation ifcallr_function
isNULL
. - Drop
out.attrs
when hashing groups of data frames to extend #507 toexpand.grid()
(#508). - Increase the number of characters in errors and warnings up to 2048.
- Refactor assertions to automatically generate better messages.
- Export assertions, conditions, and language utilities in packages that build on top of
targets
. - Change
GITHUBPAT
toGITHUB_TOKEN
in thetar_github_actions()
YAML file (#554, @eveyp). - Support the
eval
chunk option in Target Markdown (#552, @fkohrt). - Record time stamps in the metadata
time
column for all builder targets, regardless of storage format.
Target Markdown
targets 0.5.0
Bug fixes
- Export in-memory config settings from
_targets.yaml
to parallel workers.
New features
- Add a limited-scope
exclude
argument totar_watch()
andtar_watch_server()
(#458, @gorkang). - Write a
.gitignore
file to ignore everything in_targets/meta/
except.gitignore
and_targets/meta/meta
. - Target Markdown: add
knitr
engines for pipeline construction and prototyping from within literate programming documents (#469, @cderv, @nviets, @emilyriederer, @ijlyttle, @gshotwell, @gadenbuie, @tomsing1). Huge thanks to @cderv on this one for answering my deluge of questions, helping me figure out what was and was not possible inknitr
, and ultimately circling me back to a successful approach. - Add an RStudio R Markdown template for Target Markdown (#469).
- Implement
use_targets()
, which writes the Target Markdown template to the project root (#469). - Implement
tar_unscript()
to clean up scripts written by Target Markdown.
Enhancements
- Enable priorities in
tar_make()
andtar_manifest()
. - Show the priority in the print method of stem and pattern targets.
- Throw informative errors if the secondary arguments to
pattern = slice()
orpattern = sample()
are invalid. - In
tar_target_raw()
, assert that commands have length 1 when converted to expressions. - Handle errors and post failure artifacts in the Github Actions YAML file.
- Rewrite the documentation on invalidation rules in
tar_cue()
(@maelle). - Drop
dplyr
groups and"grouped_df"
class intar_group()
(tarchetypes
discussion #53, @kendonB). - Assign branch names to dynamic branching return values produced by
tar_read()
andtar_read_raw()
.
CRAN hotfix: _targets.yaml
targets 0.4.2
Bug fixes
- Do not use time stamps to monitor the config file (e.g.
_targets.yaml
). Fixes CRAN check errors from version 0.4.1.
CRAN hotfix
targets 0.4.1
- Fix CRAN test error on Windows R-devel.
- Do not inherit
roxygen2
docstrings fromshiny
. - Handle more missing
Suggests:
packages. - Unset the config lock before reading
targets.yaml
in thecallr
process.
HPC performance and monitoring
targets 0.4.0
Bug fixes
- Avoid
file.rename()
errors when migrating staged temporary files (#410). - Return correct error messages from feather and parquet formats (#388). Now calling
assert_df()
fromstore_assert_format()
instead ofstore_cast_object()
. And now those last two functions are not called at all if the target throws an error. - Retry writing lines to database files so Windows machines can run
tar_poll()
at the same time as the pipeline (#393). - Rename file written by
tar_renv()
to_targets_packages.R
(#397). - Ensure metadata is loaded to compute labels properly when
outdated = FALSE
intar_visnetwork()
.
New features
- Implement
tar_timestamp()
andtar_timestamp_raw()
to get the last modified timestamp of a target's data (#378). - Implement
tar_progress_summary()
to compactly summarize all pipeline progress (#380). - Add a
characters
argument oftar_traceback()
to cap the traceback line lengths (#383). - Add new "summary" and "about" views to
tar_watch()
(#382). - Implement
tar_poll()
to repeatedly poll runtime progress in the R console (#381).tar_poll()
is a lightweight alternative totar_watch()
. - Change the color of the "dormant" status in the graph.
- Add a
tar_envvar()
function to list values of special environment variables supported intargets
. The help file explains each environment variable in detail. - Support extra project-level configuration settings with
_targets.yaml
(#297). New functionstar_config_get()
andtar_config_set()
interact with the_targets.yaml
file. Currently only supports thestore
field to set the data store path to something other than_targets/
.
Performance
- Shut down superfluous persistent workers earlier in dynamic branching and when all remaining targets have
deployment = "main"
(#398, #399, #404, @pat-s).
Enhancements
- Attempt to print only the useful part of the traceback in
tar_traceback()
(#383). - Add a line break at the end of the "summary" reporter so warnings do not mangle the output.
- In
tar_watch()
, useshinybusy
instead ofshinycssloaders
and keep current output on display while new output is rendering (#386, @rcorty). - Right-align the headers and counts in the "summary" and "forecast" reporters.
- Add a timestamp to the "summary" reporter.
- Make the reporters show when a target ends (#391, @mattwarkentin).
- Make the reporters show when a pattern ends if the pattern built at least one target and none of the targets errored or canceled.
- Use words "start" and "built" in reporters.
- Use the region of the AWS S3 bucket instead of the local
AWS_DEFAULT_REGION
environment variable (check_region = TRUE
; #400, @tomsing1). - In
tar_meta()
, returnPOSIXct
times in the time zone of the calling system (#131). - Throw informative error messages when a target's name or command is missing (#413, @liutiming).
- Bring back ALTREP in
qs::qread()
now thatqs
0.24.1 requiresstringfish
>= 1.5.0 (#147, @glep). - Relax dynamic branching checks so
pattern = slice(...)
can take multiple indexes (#406, #419, @djbirke, @alexgphayes)
CRAN hotfix: arrow formats
Arrow formats, HPC performance, infrastructure refactor, GHA
targets 0.3.0
Bug fixes
- Fix the "write target at cursor" RStudio addin and move cursor between the parentheses.
New features
- Add a
backoff
option intar_option_set()
to set the maximum upper bound (seconds) for the polling interval (#333). - Add a new
tar_github_actions()
function to write a GitHub Actions workflow file for continuous deployment of data analysis pipelines (#339, @jaredlander). - Add a new
TAR_MAKE_REPORTER
environment variable to globally set the reporter of thetar_make*()
functions (#345, @alexpghayes). - Support new storage formats "feather", "parquet", "aws_feather", and "aws_parquet" (#355, @riazarbi).
Performance
- Implement an exponential backoff algorithm for polling the priority queue in
tar_make_clustermq()
andtar_make_future()
(#333). - In
tar_make_future()
, try to submit a target every time a worker is polled. - In
tar_make_future()
, poll workers in order of target priority. - Avoid the time delay in exiting on error (from r-lib/callr#185).
- Clone target objects for the pipeline and scrape more
targets
internal objects out of the environment in order to avoid accidental massive data transfers to workers.
Enhancements
- Use
rlang::check_installed()
insideassert_package()
(#331, @malcolmbarrett). - Allow
tar_destroy(destroy = "process")
. - In
tar_watch()
, increase defaultseconds
to 15 (previously 5). - In
tar_watch()
, debounce instead of throttle inputs. - In
tar_watch()
, add an action button to refresh the outputs. - Always deduplicate metadata after
tar_make()
. Will help compute a cache key on GitHub Actions and similar services. - Deprecate
tar_deduplicate()
due to the item above. - Reorder information in timestamped messages.
- Document RNG seed generation in
tar_target_raw()
,tar_meta()
, andtar_seed()
(#357, @alexpghayes). - Switch meaning of
%||%
and%|||%
to conform to historical precedent. - Only show a command line spinner if
reporter = "silent"
(#364, @matthiasgomolka). - Target and pipeline objects no longer have an
envir
element.
Nicer arguments and messages
Bug fixes
- In
tar_load()
, subset metadata to avoid accidental attempts to load global objects intidyselect
calls. - Do not register a pattern as running unless an actual branch is about to start (#304).
- Use a name spec in
vctrs::vec_c()
(#320, @joelnitta).
New features
- Add a new
names
argument totar_objects()
andtar_workspaces()
withtidyselect
functionality. - Record info on the main process (PID, R version,
targets
version) in_targets/meta/process
and write new functionstar_process()
andtar_pid()
to retrieve the data (#291, #292). - Add a new
targets_only
argument totar_meta()
. - Add new functions
tar_helper()
andtar_helper_raw()
to write general-purpose R scripts, using tidy evaluation for as a template mechanism (#290, #291, #292, #306). - Export functions to check the existence of various pieces of local storage:
tar_exist_meta()
,tar_exist_objects()
,tar_exist_progress()
,tar_exist_progress()
,tar_exist_script()
(#310). - Add a new
supervise
argument totar_watch()
. - Add a new
complete_only
argument totar_meta()
to optionally return only complete rows (noNA
values). - Catch
callr
errors and refer users to the debugging chapter of the manual.
Enhancements
- Improve error messages of invalid arguments (#298, @brunocarlin). Removes partial argument matching in most cases.
- By default, locally enable
crayon
if an only if the calling process is interactive (#302, @ginolhac). Can still be disabled withoptions(crayon.enabled = FALSE)
in_targets.R
. - Improve error handling and message for
format = "url"
when the HTTP response status code is not 200 (#303, @petrbouchal). - Add more
extras
packages totar_renv()
(to supporttar_watch()
). - Show informative message instead of error in
tar_watch()
if_targets.R
does not exist. - Clear up the documentation of the
names
argument oftar_load()
(#314, @jameelalsalam). - Do not override
nobody
in customcurl
handles (#315, @riazarbi). - Rename "running" to "started" in the progress metadata. This avoids the implicit claim that
targets
is somehow actively monitoring each job, e.g. through a connection or heartbeat (#318). - Set
errormode = "warn"
ingetVDigest()
for files to work around eddelbuettel/digest#49 for network drives on Windows.targets
already runs those file checks anyway. (#316, @boshek). - If a package fails to load, print the library paths
targets
tried to load from.
CRAN hotfix and app improvements
Bug fixes
tar_test()
now skips all tests on Solaris in order to fix the problems shown on the CRAN check page.- Enable
allow
andexclude
to work on imports intar_visnetwork()
andtar_glimpse()
. - Put
visNetwork
legends on right to deal with how legend nodes always align right within the legend space.
Performance
- Call
force()
on subpipeline objects to eliminate high-memory promises in target objects. Allows targets to be deployed to workers much faster whenretreival
is"main"
(#279).
New features
- Add a new box to the
tar_watch()
app to tabulate progress on dynamic branches (#273, @mattwarkentin). - Store
type
,parent
, andbranches
in progress data fortar_watch()
(#273, @mattwarkentin). - Add a
fields
argument intar_progress()
and default to"progress"
for back compatibility (#273, @mattwarkentin). - Add a new
tar_progress_branches()
function to tabulate branch progress (#273, @mattwarkentin). - Add new "refresh" switch to
tar_watch()
to toggle automatic refreshing and force a refresh.
Enhancements
- Exclude
.Random.seed
by default intar_visnetwork()
. - Spelling: "cancelled" changed to "canceled".
- Enhance controls and use of space in the
tar_watch()
app. - Centralize internal path management utilities.
Configuration
- Skip
clustermq
tests on Solaris.
Address CRAN feedback
- Avoid starting the description with the package name.
- Remove
if(FALSE)
blocks from help files to fix "unexecutable code" warnings (tar_glimpse()
,tar_visnetwork()
, andtar_watch()
). - Remove commented code in the examples (
tar_edit()
,tar_watch_ui()
, andtar_watch_server()
). - Ensure that all examples, tests, and vignettes do not write to the user's home file space. (Fixed an example of
tar_workspace()
.)