futureverse / futureverse/future

Working directory set with withr::with_dir() not respected in multisession

Open
#363 3 comments 0 reactions 0 assignees View on GitHub
documentation feature request feature/resources wontfix
Dominant language
R
Stars
1k
Forks
92
PR merge metrics
No merged PRs in 30d

Description

With current CRAN releases if `future` and `future.apply`:

``` r
## ............................................................................
## the working directory is not set to a temp dir with withr::with_dir() ####

get_wd_from_temp_dir <- function() {
withr::with_dir(tempdir(), {
future.apply::future_sapply(1:2, function(x) {
print(getwd())
})
})
}

future::plan(future::sequential)
get_wd_from_temp_dir() # works
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [2] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
future::plan(future::multisession)
getwd()
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/Rtmprio1ap/reprexbb0b1f8de0d9"
get_wd_from_temp_dir() # does not work
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/Rtmprio1ap/reprexbb0b1f8de0d9"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/Rtmprio1ap/reprexbb0b1f8de0d9"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/Rtmprio1ap/reprexbb0b1f8de0d9"
#> [2] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/Rtmprio1ap/reprexbb0b1f8de0d9"

## ............................................................................
## Everything seems to work when setting it the conventional way ####

get_wd_outside_temp_dir <- function() {
future.apply::future_sapply(1:2, function(x) {
print(getwd())
})
}
old <- setwd(tempdir())
future::plan(future::sequential)
get_wd_outside_temp_dir()
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [2] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
future::plan(future::multisession)
getwd()
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"

get_wd_outside_temp_dir() # also works
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [1] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
#> [2] "/private/var/folders/6g/bg5mcmsj7s51r33snbxhm1400000gn/T/RtmpDFg23u"
```

Created on 2020-03-05 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)




Session info

``` r
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 3.6.1 (2019-07-05)
#> os macOS Catalina 10.15.3
#> system x86_64, darwin15.6.0
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz Europe/Zurich
#> date 2020-03-05
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.6.0)
#> backports 1.1.5 2019-10-02 [1] CRAN (R 3.6.0)
#> callr 3.4.2 2020-02-12 [1] CRAN (R 3.6.0)
#> cli 2.0.1 2020-01-08 [1] CRAN (R 3.6.0)
#> codetools 0.2-16 2018-12-24 [1] CRAN (R 3.6.1)
#> crayon 1.3.4 2017-09-16 [1] CRAN (R 3.6.0)
#> desc 1.2.0 2018-05-01 [1] CRAN (R 3.6.0)
#> devtools 2.2.2 2020-02-17 [1] CRAN (R 3.6.0)
#> digest 0.6.24 2020-02-12 [1] CRAN (R 3.6.0)
#> ellipsis 0.3.0 2019-09-20 [1] CRAN (R 3.6.0)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.0)
#> fansi 0.4.1 2020-01-08 [1] CRAN (R 3.6.0)
#> fs 1.3.1 2019-05-06 [1] CRAN (R 3.6.0)
#> future 1.16.0 2020-01-16 [1] CRAN (R 3.6.0)
#> future.apply 1.4.0 2020-01-07 [1] CRAN (R 3.6.0)
#> globals 0.12.5 2019-12-07 [1] CRAN (R 3.6.0)
#> glue 1.3.1 2019-03-12 [1] CRAN (R 3.6.0)
#> highr 0.8 2019-03-20 [1] CRAN (R 3.6.0)
#> htmltools 0.4.0 2019-10-04 [1] CRAN (R 3.6.0)
#> knitr 1.28 2020-02-06 [1] CRAN (R 3.6.0)
#> listenv 0.8.0 2019-12-05 [1] CRAN (R 3.6.0)
#> magrittr 1.5 2014-11-22 [1] CRAN (R 3.6.0)
#> memoise 1.1.0 2017-04-21 [1] CRAN (R 3.6.0)
#> pkgbuild 1.0.6 2019-10-09 [1] CRAN (R 3.6.0)
#> pkgload 1.0.2 2018-10-29 [1] CRAN (R 3.6.0)
#> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 3.6.1)
#> processx 3.4.2 2020-02-09 [1] CRAN (R 3.6.1)
#> ps 1.3.2 2020-02-13 [1] CRAN (R 3.6.0)
#> R6 2.4.1 2019-11-12 [1] CRAN (R 3.6.0)
#> Rcpp 1.0.3 2019-11-08 [1] CRAN (R 3.6.0)
#> remotes 2.1.1 2020-02-15 [1] CRAN (R 3.6.0)
#> rlang 0.4.4 2020-01-28 [1] CRAN (R 3.6.1)
#> rmarkdown 2.1 2020-01-20 [1] CRAN (R 3.6.0)
#> rprojroot 1.3-2 2018-01-03 [1] CRAN (R 3.6.0)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.6.0)
#> stringi 1.4.6 2020-02-17 [1] CRAN (R 3.6.0)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 3.6.0)
#> testthat 2.3.1 2019-12-01 [1] CRAN (R 3.6.0)
#> usethis 1.5.1 2019-07-04 [1] CRAN (R 3.6.0)
#> withr 2.1.2 2018-03-15 [1] CRAN (R 3.6.0)
#> xfun 0.12 2020-01-13 [1] CRAN (R 3.6.1)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 3.6.0)
#>
#> [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library
```

Source: https://github.com/r-lib/styler/issues/277

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.