Recent Releases of withr
withr - withr 3.0.2
local_language()now never warns when set to"C"(#254). This is a cross-platform and silent way of disablinggettext()translations.
- R
Published by lionel- over 1 year ago
withr - withr 3.0.0
Performance of withr
defer()is now a thin wrapper aroundbase::on.exit(). This is possible thanks to two contributions that we made to R 3.5:- We added an argument for FIFO cleanup:
on.exit(after = FALSE). - Calling
sys.on.exit()elsewhere than top-level didn't work. This is needed for manual invokation withdeferred_run().
- We added an argument for FIFO cleanup:
Following this change, defer() is now much faster (although still
slower than on.exit() which is a primitive function and about as
fast as it gets). This also increases the compatibility of defer()
with on.exit() (all handlers are now run in the expected order
even if they are registered with on.exit()) and standalone
versions of defer().
Breaking change
- When
source()is used with a local environment, as opposed toglobalenv()(the default), you now need to setoptions(withr.hook_source = TRUE)to get proper withr support (runningdefer()orlocal_functions at top-level of a script). THis support is disabled by default in local environments to avoid a performance penalty in normal usage of withr features.
Other features and bugfixes
deferred_run()now reports the number of executed expressions with a message.deferred_run()can now be run at any point in a knitr file (#235).
,* local_tempfile() now writes lines in UTF-8 (#210) and always uses
\n for newlines (#216).
local_pdf()and friends now correctly restore to the previously active device (#138).local_()now works even if withr isn't attached (#207).local_par()andwith_par()now work if you don't set any parameters (#238).with_language()now properly resets the translation cache (#213).Fixes for Debian packaging.
- R
Published by lionel- over 2 years ago
withr - withr 2.5.0
defer()and alllocal_*()functions now work when run inside of a.Rmd. The deferred expressions are executed when knitr exits.defer()andlocal_functions now work withinsource(). The deferred expressions are executed whensource()exits.with_()andlocal_()gain agetargument. Supply a getter function to createwithandlocalfunctions that are robust to early exits.
When supplied, this restoration pattern is used:
old <- get()
on.exit(set(old))
set(new)
action()
Instead of:
old <- set(new)
on.exit(set(old))
action()
This ensures proper restoration of the old state when an early exit
occurs during set() (for instance when a deprecation warning is
caught, see #191).
These
with_andlocal_functions are now robust to early exits (see next bullet):_locale()_envvar()_libpaths()_options()_par()_path()_seed()
with_namespace()andlocal_namespace()now passwarn.conflictstoattach()(@kyleam, #185).local_rng_version()andlocal_seed()no longer warn when restoringsample.kindto"Rounding"(#167).with_seed()now preserves the current values ofRNGkind()(#167).with_collate()is no longer affected by theLC_COLLATEenvironment variable set to "C" (#179).Local evaluations in the
globalenv()(as opposed to top-level ones) are now unwound in the same way as regular environments.local_tempfile()gains a lines argument so, if desired, you can pre-fill the temporary file with some data.
- R
Published by lionel- over 4 years ago
withr - withr 2.4.3
Lionel Henry is the new maintainer.
Handlers registered with the global environment (as happens when
local_()is run at the top-level, outside a function) are now automatically run when the R session ends (#173).New
with_language()andlocal_language()to temporarily control the language used for translations (#180).with_seed()now caches the check for R version, so is now faster (#170)with_makevars()andlocal_makevars()now eagerly evaluate thepathargument (#169)
- R
Published by jimhester over 4 years ago
withr - withr 2.4.2
local_options()now lets you set an option toNULLas intended (#156)local_tempfile()argumentenviris deprecated, in favor of.local_envir. All withr functions exceptlocal_tempfile()used.local_envirto specify environments, so this makes this function consistent with the rest. (#157)with_environment()now passingposandwarn.conflictstoattach(), as intended (#161).with_seed()now also sets the RNG via new arguments.rng_kind,.rng_normal_kindand.rng_sample_kind(#162, @AshesITR).with_timezone()now works after recent changes toSys.timezone()in R-devel (#165)
- R
Published by jimhester about 5 years ago
withr - withr 2.4.1
- Tests which require
capabilities("cairo")are now skipped.
- R
Published by jimhester over 5 years ago
withr - withr 2.4.0
withr is now licensed as MIT (#154).
Tests for
with_cairo_pdf()andwith_cairo_ps()have been removed, as they fail if Cairo is not available, such as with M1 macOS systems (#158)local_seed()is now exported (#153)
- R
Published by jimhester over 5 years ago
withr - withr 2.3.0
Deprecations
local_tempfile()argumentnewis deprecated, in favor of returning the path to the new tempfile. calls likelocal_tempfile("xyz")should be replaced withxyx <- local_tempfile()in your code (#141).
New features
New
local_seed()function andlocal_preserve_seed()functions to correspond towith_seed()andwith_preserve_seed()(#139).New
local_tempdir()function added to create a temp directory (#140)local_*()functions now take dots (...), which can simplify calls in some cases, e.g. you can now uselocal_options(foo = "bar")rather thanlocal_options(c(foo = "bar")).
Minor improvements and fixes
defer()now throws an error if an error occurs in the deferred expression (#148)with_file()andlocal_file()can now work if the file is actually a directory (#144).
- R
Published by jimhester over 5 years ago
withr - withr 2.2.0
defer()can set deferred events on.GlobalEnvto facilitate the interactive development of code inside a function or test. Helpersdeferred_run()(anddeferred_clear()) provide a way to explicity run and clear (or just clear) deferred events (#76, @jennybc).with_connection()now works when existing objects or connections exist with the same names (#120)with_makevars()now usestools::makevars_user()to determine the default user makevars file (#77, @siddharthab).with_options()no longer usesdo.call(), so optiosn are not evaluated on exit (#73, @mtmorgan).with_package()no longer has thehelpargument (#94, @wendtke).with_package()now does not try to detach the package if it is already attached before callingwith_package()(#107)with_preserve_seed()now restores.Random.seedif it is not set originally (#124).Add
with_rng_version()andlocal_rng_version()functions to change the version of the RNG (#90, @gaborcsardi).with_svg()documentation now is consistent across R versions (#129)Add
with_timezone()andlocal_timezone()functions to change the time zone (#92, @gaborcsardi).with_tempfile()andlocal_tempfile()now delete recursively directories on exit (#84, @meta00).
- R
Published by jimhester about 6 years ago
withr - withr v2.1.1
- Fixes testthat 2.0.0 failures
with_file()function to automatically remove files.
- R
Published by jimhester over 8 years ago
withr - withr v2.1.0
with_connection()function to automatically close R file connections.with_db_connection()function to automatically disconnect from DBI database connections.with_gctorture2command to run code with gctorture2, useful for testing (#47).with_package(),with_namespace()andwith_environment()(and equivalent locals) functions added, to run code with a modified object search path (#38,48).
Add
with_tempfile()andlocal_tempfile()functions to create temporary files which are cleanup up afterwards. (#32)Remove the
codeargument fromlocal_functions (#50).
- R
Published by jimhester over 8 years ago
withr - 2.0.0
Each
with_function now has alocal_variant, which reset at the end of their local scope, generally at the end of the function body.New functions
with_seed()andwith_preserve_seed()for running code with a given random seed (#45, @krlmlr).
- R
Published by jimhester almost 9 years ago
withr - withr 1.0.1
- Relaxed R version requirement to 3.0.2 (#35, #39).
- New
with_output_sink()andwith_message_sink()(#24).
- R
Published by jimhester over 10 years ago