diff --git a/.github/workflows/integrate.yaml b/.github/workflows/tests.yaml similarity index 64% rename from .github/workflows/integrate.yaml rename to .github/workflows/tests.yaml index 55fa444e..6f7459d4 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/tests.yaml @@ -3,6 +3,8 @@ name: tests on: push: #branches: [ develop ] +env: + RENV_PATHS_ROOT: ~/.local/share/renv jobs: test-on-latest-ubuntu: @@ -26,7 +28,16 @@ jobs: sudo Rscript --vanilla -e 'install.packages("rmarkdown", repos="http://cran.us.r-project.org")' conda env create -f environment.yml -n test-environment source activate test-environment - snakemake -j1 renv_install - R -e 'renv::settings$use.cache(FALSE)' - snakemake -j1 renv_restore - bash tests/scripts/run_tests.sh all test \ No newline at end of file + - name: Cache packages + uses: actions/cache@v1 + with: + path: ${{ env.RENV_PATHS_ROOT }} + key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }} + restore-keys: | + ${{ runner.os }}-renv- + - name: Restore packages + shell: Rscript {0} + run: | + if (!requireNamespace("renv", quietly = TRUE)) install.packages("renv") + renv::restore() + - run : bash tests/scripts/run_tests.sh all test \ No newline at end of file diff --git a/docs/change-log.md b/docs/change-log.md index d922b7ae..420b3ad5 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -1,4 +1,7 @@ # Change Log + +## next release (0.3.0) +- Update R and Python virtual environments ## v0.2.3 - Fix participant IDS in the example analysis workflow ## v0.2.2 diff --git a/docs/developers/virtual-environments.md b/docs/developers/virtual-environments.md index f0b5eb02..0a70bdad 100644 --- a/docs/developers/virtual-environments.md +++ b/docs/developers/virtual-environments.md @@ -1,17 +1,21 @@ ## Python Virtual Environment ### Add new packages - Try to install any new package using `conda install -c CHANNEL PACKAGE_NAME` (you can use `pip` if the package is only available there). Make sure your Python virtual environment is active (`conda activate YOUR_ENV`). ### Remove packages Uninstall packages using the same manager you used to install them `conda remove PACKAGE_NAME` or `pip uninstall PACKAGE_NAME` -### Update your conda `environment.yaml` - -After installing or removing a package you can use the following command in your terminal to update your `environment.yaml` before publishing your pipeline. Note that we ignore the package version for `libfortran` to keep compatibility with Linux: +### Updating all packages +Make sure your Python virtual environment is active (`conda activate YOUR_ENV`), then run ```bash -conda env export --no-builds | sed 's/^.*libgfortran.*$/ - libgfortran/' > environment.yml +conda update --all +``` + +### Update your conda `environment.yaml` +After installing or removing a package you can use the following command in your terminal to update your `environment.yaml` before publishing your pipeline. Note that we ignore the package version for `libfortran` and `mkl` to keep compatibility with Linux: +```bash +conda env export --no-builds | sed 's/^.*libgfortran.*$/ - libgfortran/' | sed 's/^.*mkl=.*$/ - mkl/' > environment.yml ``` ## R Virtual Environment @@ -26,6 +30,10 @@ conda env export --no-builds | sed 's/^.*libgfortran.*$/ - libgfortran/' > env 2. Run `R` to open an R interactive session 3. Run `renv::remove("PACKAGE_NAME")` +### Updating all packages +1. Open your terminal and navigate to RAPIDS' root folder +2. Run `R` to open an R interactive session +3. Run `renv::update()` ### Update your R `renv.lock` After installing or removing a package you can use the following command in your terminal to update your `renv.lock` before publishing your pipeline. diff --git a/docs/index.md b/docs/index.md index 54d2824f..4ed3f0ca 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,6 +13,8 @@ RAPIDS is open source, documented, modular, tested, and reproducible. At the mom :fontawesome-solid-play: Ready to start? Go to [Installation](setup/installation/), then to [Configuration](setup/configuration/), and then to [Execution](setup/execution/) + :fontawesome-solid-sync-alt: Are you upgrading from RAPIDS [beta](https://rapidspitt.readthedocs.io/en/latest/)? Follow this [guide](migrating-from-old-versions) + ## How does it work? RAPIDS is formed by R and Python scripts orchestrated by [Snakemake](https://snakemake.readthedocs.io/en/stable/). We suggest you read Snakemake's docs but in short: every link in the analysis chain is atomic and has files as input and output. Behavioral features are processed per sensor and per participant. diff --git a/environment.yml b/environment.yml index 38a15b75..e2894544 100644 --- a/environment.yml +++ b/environment.yml @@ -1,102 +1,109 @@ -name: rapids202007 +name: rapids202012 channels: - - anaconda - conda-forge - defaults dependencies: - _py-xgboost-mutex=2.0 - - appdirs=1.4.3 - - arrow=0.15.2 - - asn1crypto=1.2.0 - - astropy=4.0.1.post1 - - attrs=19.3.0 + - appdirs=1.4.4 + - arrow=0.16.0 + - asn1crypto=1.4.0 + - astropy=4.2 + - attrs=20.3.0 - binaryornot=0.4.4 - blas=1.0 + - brotlipy=0.7.0 - bzip2=1.0.8 - - ca-certificates=2020.6.20 - - certifi=2020.6.20 - - cffi=1.13.1 + - ca-certificates=2020.12.8 + - certifi=2020.12.5 + - cffi=1.14.4 - chardet=3.0.4 - - click=7.0 + - click=7.1.2 - cookiecutter=1.6.0 - - cryptography=2.7 + - cryptography=3.3.1 - datrie=0.8.2 - - docutils=0.15.2 - - future=0.18.1 - - gitdb2=2.0.6 - - gitpython=3.0.4 - - idna=2.8 + - docutils=0.16 + - future=0.18.2 + - gitdb=4.0.5 + - gitdb2=4.0.2 + - gitpython=3.1.11 + - idna=2.10 - imbalanced-learn=0.6.2 - - importlib_metadata=0.23 + - importlib-metadata=2.0.0 + - importlib_metadata=2.0.0 - intel-openmp=2019.4 - - jinja2=2.10.3 + - jinja2=2.11.2 - jinja2-time=0.2.0 - - joblib=0.16.0 - - jsonschema=3.1.1 + - joblib=1.0.0 + - jsonschema=3.2.0 - libblas=3.8.0 - libcblas=3.8.0 - - libcxx=9.0.0 - - libedit=3.1.20181209 - - libffi=3.2.1 + - libcxx=10.0.0 + - libedit=3.1.20191231 + - libffi=3.3 - libgfortran - liblapack=3.8.0 - libxgboost=0.90 - - lightgbm=2.3.0 + - lightgbm=3.1.1 - llvm-openmp=10.0.0 - markupsafe=1.1.1 - - mkl=2019.4 + - mkl - mkl-service=2.3.0 - - mkl_fft=1.0.14 - - mkl_random=1.1.0 - - more-itertools=7.2.0 - - ncurses=6.1 - - numpy=1.17.2 - - numpy-base=1.17.2 - - openssl=1.1.1g - - pandas=0.25.2 - - pbr=5.4.3 - - pip=19.3.1 - - plotly=4.2.1 + - mkl_fft=1.2.0 + - mkl_random=1.1.1 + - more-itertools=8.6.0 + - ncurses=6.2 + - numpy=1.19.2 + - numpy-base=1.19.2 + - openssl=1.1.1i + - pandas=1.1.5 + - pbr=5.5.1 + - pip=20.3.3 + - plotly=4.14.1 - poyo=0.5.0 - - psutil=5.6.3 + - psutil=5.7.2 - py-xgboost=0.90 - - pycparser=2.19 - - pyopenssl=19.0.0 + - pycparser=2.20 + - pyerfa=1.7.1.1 + - pyopenssl=20.0.1 - pysocks=1.7.1 - - python=3.7.3 - - python-dateutil=2.8.0 + - python=3.7.9 + - python-dateutil=2.8.1 - python_abi=3.7 - - pytz=2019.3 - - pyyaml=5.1.2 + - pytz=2020.4 + - pyyaml=5.3.1 - readline=8.0 - - requests=2.22.0 + - requests=2.25.0 - retrying=1.3.3 - - scikit-learn=0.22.1 - - scipy=1.3.1 - - setuptools=41.6.0 - - six=1.12.0 - - smmap2=2.0.5 - - sqlite=3.30.1 - - tk=8.6.9 - - urllib3=1.25.6 - - wheel=0.33.6 + - scikit-learn=0.23.2 + - scipy=1.5.2 + - setuptools=51.0.0 + - six=1.15.0 + - smmap=3.0.4 + - smmap2=3.0.1 + - sqlite=3.33.0 + - threadpoolctl=2.1.0 + - tk=8.6.10 + - urllib3=1.25.11 + - wheel=0.36.2 - whichcraft=0.6.1 - - wrapt=1.11.2 + - wrapt=1.12.1 - xgboost=0.90 - - xz=5.2.4 - - yaml=0.1.7 - - zipp=0.6.0 + - xz=5.2.5 + - yaml=0.2.5 + - zipp=3.4.0 - zlib=1.2.11 - pip: + - amply==0.1.4 - configargparse==0.15.1 - decorator==4.4.2 - ipython-genutils==0.2.0 - jupyter-core==4.6.3 - nbformat==5.0.7 + - pulp==2.4 + - pyparsing==2.4.7 - pyrsistent==0.15.5 - ratelimiter==1.2.0.post0 - - snakemake==5.20.1 + - snakemake==5.30.2 - toposort==1.5 - traitlets==4.3.3 -prefix: /usr/local/Caskroom/miniconda/base/envs/rapids202007 - +prefix: /usr/local/Caskroom/miniconda/base/envs/rapids202012 diff --git a/renv.lock b/renv.lock index e20ff9f0..448a1357 100644 --- a/renv.lock +++ b/renv.lock @@ -11,10 +11,10 @@ "Packages": { "BDgraph": { "Package": "BDgraph", - "Version": "2.62", + "Version": "2.63", "Source": "Repository", "Repository": "CRAN", - "Hash": "c2b632b048e00a670495f2804767159f" + "Hash": "81946367dff8885e6d87e4e12ffc5f92" }, "BH": { "Package": "BH", @@ -39,31 +39,31 @@ }, "Formula": { "Package": "Formula", - "Version": "1.2-3", + "Version": "1.2-4", "Source": "Repository", "Repository": "CRAN", - "Hash": "0537b6f1f38ea1fd514089192724bb6e" + "Hash": "cc8c8c4d61346cde1ca60030ff9c241f" }, "Hmisc": { "Package": "Hmisc", - "Version": "4.4-0", + "Version": "4.4-2", "Source": "Repository", "Repository": "CRAN", - "Hash": "1016ef46c7ebf841513624ecb22eebc7" + "Hash": "66458e906b2112a8b1639964efd77d7c" }, "KernSmooth": { "Package": "KernSmooth", - "Version": "2.23-16", + "Version": "2.23-18", "Source": "Repository", "Repository": "CRAN", - "Hash": "997471f25a7ed6c782f0090ce52cc63a" + "Hash": "9e703ad8bf0e99f3691f05da32dfe68b" }, "MASS": { "Package": "MASS", - "Version": "7.3-51.6", + "Version": "7.3-53", "Source": "Repository", "Repository": "CRAN", - "Hash": "1dad32ac9dbd8057167b2979fb932ff7" + "Hash": "d1bc1c8e9c0ace57ec9ffea01021d45f" }, "Matrix": { "Package": "Matrix", @@ -74,10 +74,10 @@ }, "R6": { "Package": "R6", - "Version": "2.4.1", + "Version": "2.5.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "292b54f8f4b94669b08f94e5acce6be2" + "Hash": "b203113193e70978a696b2809525649d" }, "RColorBrewer": { "Package": "RColorBrewer", @@ -88,31 +88,31 @@ }, "RMariaDB": { "Package": "RMariaDB", - "Version": "1.0.10", + "Version": "1.0.11", "Source": "Repository", "Repository": "CRAN", - "Hash": "d149479ea03e5cbb1e788449ef5e04b4" + "Hash": "0e4f634f2bb38e325717d384a877ccc0" }, "Rcpp": { "Package": "Rcpp", - "Version": "1.0.4.6", + "Version": "1.0.5", "Source": "Repository", "Repository": "CRAN", - "Hash": "e652f23d8b1807cc975c51410d05b72f" + "Hash": "125dc7a0ed375eb68c0ce533b48d291f" }, "RcppArmadillo": { "Package": "RcppArmadillo", - "Version": "0.9.870.2.0", + "Version": "0.10.1.2.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "f7fee4557377d47093bd2b65f2642e52" + "Hash": "1a885965adade4b8629c478a3b3c2cf7" }, "RcppEigen": { "Package": "RcppEigen", - "Version": "0.3.3.7.0", + "Version": "0.3.3.9.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "c6faf038ba4346b1de19ad7c99b8f94a" + "Hash": "ddfa72a87fdf4c80466a20818be91d00" }, "abind": { "Package": "abind", @@ -144,10 +144,10 @@ }, "backports": { "Package": "backports", - "Version": "1.1.6", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "3997fd62345a616e59e8161ee0a5816f" + "Hash": "644043219fc24e190c2f620c1a380a69" }, "base64enc": { "Package": "base64enc", @@ -170,26 +170,40 @@ "Repository": "CRAN", "Hash": "9fe98599ca456d6552421db0d6772d8f" }, - "boot": { - "Package": "boot", - "Version": "1.3-24", + "blob": { + "Package": "blob", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "72557d88b5f42f01221dfa436de99301" + "Hash": "9addc7e2c5954eca5719928131fed98c" + }, + "boot": { + "Package": "boot", + "Version": "1.3-25", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bd51734a754b6c2baf28b2d1ebc11e91" + }, + "brio": { + "Package": "brio", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "570a24963009b9cce0869a0463c83580" }, "broom": { "Package": "broom", - "Version": "0.5.6", + "Version": "0.7.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "754fdb4d17d4ae871343ff2909728ca3" + "Hash": "5581a5ddc8fe2ac5e0d092ec2de4c4ae" }, "callr": { "Package": "callr", - "Version": "3.4.3", + "Version": "3.5.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "643163a00cb536454c624883a10ae0bc" + "Hash": "b7d7f1e926dfcd57c74ce93f5c048e80" }, "cellranger": { "Package": "cellranger", @@ -207,24 +221,24 @@ }, "class": { "Package": "class", - "Version": "7.3-16", + "Version": "7.3-17", "Source": "Repository", "Repository": "CRAN", - "Hash": "ebc639c4432a2e9c17f195d004848100" + "Hash": "9267f5dab59a4ef44229858a142bded1" }, "cli": { "Package": "cli", - "Version": "2.0.2", + "Version": "2.2.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd" + "Hash": "3ef298932294b775fa0a3eeaa3a645b0" }, "clipr": { "Package": "clipr", - "Version": "0.7.0", + "Version": "0.7.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "08cf4045c149a0f0eaf405324c7495bd" + "Hash": "ebaa97ac99cc2daf04e77eecc7b781d7" }, "cluster": { "Package": "cluster", @@ -235,17 +249,24 @@ }, "codetools": { "Package": "codetools", - "Version": "0.2-16", + "Version": "0.2-18", "Source": "Repository", "Repository": "CRAN", - "Hash": "89cf4b8207269ccf82fbeb6473fd662b" + "Hash": "019388fc48e48b3da0d3a76ff94608a8" }, "colorspace": { "Package": "colorspace", - "Version": "1.4-1", + "Version": "2.0-0", "Source": "Repository", "Repository": "CRAN", - "Hash": "6b436e95723d1f0e861224dd9b094dfb" + "Hash": "abea3384649ef37f60ef51ce002f3547" + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67" }, "corpcor": { "Package": "corpcor", @@ -254,6 +275,13 @@ "Repository": "CRAN", "Hash": "ae01381679f4511ca7a72d55fe175213" }, + "cpp11": { + "Package": "cpp11", + "Version": "0.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ba66e5a750d39067d888aa7af797fed2" + }, "crayon": { "Package": "crayon", "Version": "1.3.4", @@ -277,17 +305,17 @@ }, "data.table": { "Package": "data.table", - "Version": "1.12.8", + "Version": "1.13.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "cd711af60c47207a776213a368626369" + "Hash": "626afb25b020646f53105e6485e695c6" }, "dbplyr": { "Package": "dbplyr", - "Version": "1.4.3", + "Version": "2.0.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "81ae261735c247d9551126462db5a4b5" + "Hash": "714005206038b1dda74cb1de85029a20" }, "desc": { "Package": "desc", @@ -296,26 +324,33 @@ "Repository": "CRAN", "Hash": "6c8fe8fa26a23b79949375d372c7b395" }, - "digest": { - "Package": "digest", - "Version": "0.6.25", + "diffobj": { + "Package": "diffobj", + "Version": "0.3.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "f697db7d92b7028c4b3436e9603fb636" + "Hash": "16533929cf545f3c9b796780cccf5eff" + }, + "digest": { + "Package": "digest", + "Version": "0.6.27", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a0cbe758a531d054b537d16dff4d58a1" }, "dplyr": { "Package": "dplyr", - "Version": "0.8.5", + "Version": "1.0.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "57a42ddf80f429764ff7987128c3fd0a" + "Hash": "d0509913b27ea898189ee664b6030dc2" }, "ellipsis": { "Package": "ellipsis", - "Version": "0.3.0", + "Version": "0.3.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "7067d90c1c780bfe80c0d497e3d7b49d" + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a" }, "entropy": { "Package": "entropy", @@ -368,59 +403,59 @@ }, "foreach": { "Package": "foreach", - "Version": "1.5.0", + "Version": "1.5.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "8fb3ff01ee7d85893f56df8d77213381" + "Hash": "e32cfc0973caba11b65b1fa691b4d8c9" }, "foreign": { "Package": "foreign", - "Version": "0.8-79", + "Version": "0.8-80", "Source": "Repository", "Repository": "CRAN", - "Hash": "910ad5e5ce9aae0d0f57186ca9a12e1e" + "Hash": "ae1b1e15cc6ccb2bc61c0ac33e86d35f" }, "fs": { "Package": "fs", - "Version": "1.4.1", + "Version": "1.5.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "780713bd2f53156fae001443dcdbdcd5" + "Hash": "44594a07a42e5f91fac9f93fda6d0109" }, "generics": { "Package": "generics", - "Version": "0.0.2", + "Version": "0.1.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "b8cff1d1391fd1ad8b65877f4c7f2e53" + "Hash": "4d243a9c10b00589889fe32314ffd902" }, "ggforce": { "Package": "ggforce", - "Version": "0.3.1", + "Version": "0.3.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "b7132d67f9814af0536cd5761be94314" + "Hash": "4adaf6b01b41f243ba0c62801de3331e" }, "ggplot2": { "Package": "ggplot2", - "Version": "3.3.0", + "Version": "3.3.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "911561e07da928345f1ae2d69f97f3ea" + "Hash": "4ded8b439797f7b1693bd3d238d0106b" }, "ggraph": { "Package": "ggraph", - "Version": "2.0.2", + "Version": "2.0.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "11efbeca93af843c5213ebae42cc2b5b" + "Hash": "2a189e5cd2bbfe687ed631be27c07462" }, "ggrepel": { "Package": "ggrepel", - "Version": "0.8.2", + "Version": "0.9.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "c013a50b19695daf04853679e1bc105a" + "Hash": "2cde657b5a57bf20ccdc8ec05fe69556" }, "glasso": { "Package": "glasso", @@ -431,24 +466,24 @@ }, "glmnet": { "Package": "glmnet", - "Version": "3.0-2", + "Version": "4.0-2", "Source": "Repository", "Repository": "CRAN", - "Hash": "96a03ce147d2a6d3e056e9da1d9c6940" + "Hash": "056100917c75e6f8a0d36f8bdd552799" }, "glue": { "Package": "glue", - "Version": "1.4.0", + "Version": "1.4.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "2aefa994e8df5da17dc09afd80f924d5" + "Hash": "6efd734b14c6471cfe443345f3e35e29" }, "graphlayouts": { "Package": "graphlayouts", - "Version": "0.7.0", + "Version": "0.7.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "786cadbe37487dbec2e0c91249dbbce0" + "Hash": "2a0d18b9395cd27066d209b83bb29ea6" }, "gridExtra": { "Package": "gridExtra", @@ -473,10 +508,10 @@ }, "haven": { "Package": "haven", - "Version": "2.2.0", + "Version": "2.3.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "e3f662e125e9fdffd1ee4e94baea3451" + "Hash": "221d0ad75dfa03ebf17b1a4cc5c31dfc" }, "highr": { "Package": "highr", @@ -494,38 +529,38 @@ }, "htmlTable": { "Package": "htmlTable", - "Version": "1.13.3", + "Version": "2.1.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "90d75b22931af95e2dbb17188e1dfa0c" + "Hash": "4f2a742fc75dedafe660e3b47a37680e" }, "htmltools": { "Package": "htmltools", - "Version": "0.4.0", + "Version": "0.5.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "2d7691222f82f41e93f6d30f169bd5e1" + "Hash": "7d651b7131794fe007b1ad6f21aaa401" }, "htmlwidgets": { "Package": "htmlwidgets", - "Version": "1.5.1", + "Version": "1.5.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "41bace23583fbc25089edae324de2dc3" + "Hash": "6fdaa86d0700f8b3e92ee3c445a5a10d" }, "httpuv": { "Package": "httpuv", - "Version": "1.5.2", + "Version": "1.5.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "f793dad2c9ae14fbb1d22f16f23f8326" + "Hash": "4e6dabb220b006ccdc3b3b5ff993b205" }, "httr": { "Package": "httr", - "Version": "1.4.1", + "Version": "1.4.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "7146fea4685b4252ebf478978c75f597" + "Hash": "a525aba14184fec243f9eaec62fbed43" }, "huge": { "Package": "huge", @@ -536,24 +571,24 @@ }, "igraph": { "Package": "igraph", - "Version": "1.2.5", + "Version": "1.2.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "3878c30ce67cdb7f2d7f72554e37f476" + "Hash": "7b1f856410253d56ea67ad808f7cdff6" }, "isoband": { "Package": "isoband", - "Version": "0.2.1", + "Version": "0.2.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "9b2f7cf1899f583a36d367702ecf49a3" + "Hash": "53647fb507373700028b2ce6cd30751a" }, "iterators": { "Package": "iterators", - "Version": "1.0.12", + "Version": "1.0.13", "Source": "Repository", "Repository": "CRAN", - "Hash": "117128f48662573ff4c4e72608b9e202" + "Hash": "64778782a89480e9a644f69aad9a2877" }, "jpeg": { "Package": "jpeg", @@ -564,31 +599,31 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.6.1", + "Version": "1.7.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "84b0ee361e2f78d6b7d670db9471c0c5" + "Hash": "98138e0994d41508c7a6b84a0600cfcb" }, "knitr": { "Package": "knitr", - "Version": "1.28", + "Version": "1.30", "Source": "Repository", "Repository": "CRAN", - "Hash": "915a6f0134cdbdf016d7778bc80b2eda" + "Hash": "eed7ee0d02eee88d53881cdc92457c62" }, "labeling": { "Package": "labeling", - "Version": "0.3", + "Version": "0.4.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "73832978c1de350df58108c745ed0e3e" + "Hash": "3d5108641f47470611a32d0bdf357a72" }, "later": { "Package": "later", - "Version": "1.0.0", + "Version": "1.1.0.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "6d927978fc658d24175ce37db635f9e5" + "Hash": "d0a62b247165aabf397fded504660d8a" }, "lattice": { "Package": "lattice", @@ -606,10 +641,10 @@ }, "lavaan": { "Package": "lavaan", - "Version": "0.6-5", + "Version": "0.6-7", "Source": "Repository", "Repository": "CRAN", - "Hash": "898f1cb9457e5afeaaf6c43c8ffbd72b" + "Hash": "6cc8bb26e9deab15394d48d5ded61ce2" }, "lifecycle": { "Package": "lifecycle", @@ -620,17 +655,17 @@ }, "lubridate": { "Package": "lubridate", - "Version": "1.7.8", + "Version": "1.7.9.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "6c04c31012c1be39783bebbbfc27b3a3" + "Hash": "5b5b02f621d39a499def7923a5aee746" }, "magrittr": { "Package": "magrittr", - "Version": "1.5", + "Version": "2.0.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "1bb58822a20301cee84a41678e25d9b7" + "Hash": "41287f1ac7d28a92f0a286ed507928d3" }, "markdown": { "Package": "markdown", @@ -648,17 +683,17 @@ }, "mgcv": { "Package": "mgcv", - "Version": "1.8-31", + "Version": "1.8-33", "Source": "Repository", "Repository": "CRAN", - "Hash": "4bb7e0c4f3557583e1e8d3c9ffb8ba5c" + "Hash": "eb7b6439bc6d812eed2cddba5edc6be3" }, "mgm": { "Package": "mgm", - "Version": "1.2-9", + "Version": "1.2-10", "Source": "Repository", "Repository": "CRAN", - "Hash": "15782a10391af182d7b42c3b3971de9a" + "Hash": "6a82e040f714adcd21a249d718dee637" }, "mime": { "Package": "mime", @@ -669,17 +704,17 @@ }, "mnormt": { "Package": "mnormt", - "Version": "1.5-7", + "Version": "2.0.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "74b6d3efd46009b9304a7d760fd20e03" + "Hash": "7e6ee68a01d6c87c69087d4a250ee763" }, "modelr": { "Package": "modelr", - "Version": "0.1.7", + "Version": "0.1.8", "Source": "Repository", "Repository": "CRAN", - "Hash": "5a10316936c16bb3b341f687c9ac0fff" + "Hash": "9fd59716311ee82cba83dc2826fc5577" }, "munsell": { "Package": "munsell", @@ -690,10 +725,10 @@ }, "nlme": { "Package": "nlme", - "Version": "3.1-147", + "Version": "3.1-151", "Source": "Repository", "Repository": "CRAN", - "Hash": "dd4a1423f1472a2a8e05dd2c8945c3af" + "Hash": "42c8ba2b6a32a6bf0874e93e3bd86a43" }, "nnet": { "Package": "nnet", @@ -711,10 +746,10 @@ }, "openssl": { "Package": "openssl", - "Version": "1.4.1", + "Version": "1.4.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "49f7258fd86ebeaea1df24d9ded00478" + "Hash": "a399e4773075fc2375b71f45fca186c4" }, "packrat": { "Package": "packrat", @@ -725,10 +760,10 @@ }, "pbapply": { "Package": "pbapply", - "Version": "1.4-2", + "Version": "1.4-3", "Source": "Repository", "Repository": "CRAN", - "Hash": "ee90507ce37987b22470fae76325f370" + "Hash": "52f8028b028076bc3b7ee5d6251abf0d" }, "pbivnorm": { "Package": "pbivnorm", @@ -739,17 +774,17 @@ }, "pillar": { "Package": "pillar", - "Version": "1.4.4", + "Version": "1.4.7", "Source": "Repository", "Repository": "CRAN", - "Hash": "b01d2494d0e2b6b02fae40e1543fbcb0" + "Hash": "3b3dd89b2ee115a8b54e93a34cd546b4" }, "pkgbuild": { "Package": "pkgbuild", - "Version": "1.0.8", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "8d8b5e29223aabb829246397299f0592" + "Hash": "725fcc30222d4d11ec68efb8ff11a9af" }, "pkgconfig": { "Package": "pkgconfig", @@ -760,10 +795,10 @@ }, "pkgload": { "Package": "pkgload", - "Version": "1.0.2", + "Version": "1.1.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "5e655fb54cceead0f095f22d7be33da3" + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282" }, "plogr": { "Package": "plogr", @@ -809,10 +844,10 @@ }, "processx": { "Package": "processx", - "Version": "3.4.2", + "Version": "3.4.5", "Source": "Repository", "Repository": "CRAN", - "Hash": "20a082f2bde0ffcd8755779fd476a274" + "Hash": "22aab6098cb14edd0a5973a8438b569b" }, "progress": { "Package": "progress", @@ -823,24 +858,24 @@ }, "promises": { "Package": "promises", - "Version": "1.1.0", + "Version": "1.1.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "efbbe62da4709f7040a380c702bc7103" + "Hash": "a8730dcbdd19f9047774909f0ec214a4" }, "ps": { "Package": "ps", - "Version": "1.3.3", + "Version": "1.5.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "425d938eb9c02906a8ac98c0c2a306b5" + "Hash": "ebaed51a03411fd5cfc1e12d9079b353" }, "psych": { "Package": "psych", - "Version": "1.9.12.31", + "Version": "2.0.12", "Source": "Repository", "Repository": "CRAN", - "Hash": "fb8cedacb2ded44bbfc6c2e028ebecde" + "Hash": "9345dffe01b539d1c0b00eef80c51adf" }, "purrr": { "Package": "purrr", @@ -858,10 +893,10 @@ }, "readr": { "Package": "readr", - "Version": "1.3.1", + "Version": "1.4.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "af8ab99cd936773a148963905736907b" + "Hash": "2639976851f71f330264a9c9c3d43a61" }, "readxl": { "Package": "readxl", @@ -877,12 +912,19 @@ "Repository": "CRAN", "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" }, - "renv": { - "Package": "renv", - "Version": "0.10.0", + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "0d3f1c2b63e70b3d918246b4e2ca59b7" + "Hash": "76c9e04c712a05848ae7a23d2f170a40" + }, + "renv": { + "Package": "renv", + "Version": "0.12.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b5510c50c7f31d453c385c7b460af2b9" }, "reprex": { "Package": "reprex", @@ -907,17 +949,17 @@ }, "rlang": { "Package": "rlang", - "Version": "0.4.6", + "Version": "0.4.9", "Source": "Repository", "Repository": "CRAN", - "Hash": "aa263e3ce17b177c49e0daade2ee3cdc" + "Hash": "9d7aba7bed9a79e2403b4777428a2b12" }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.1", + "Version": "2.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "9d1c61d476c448350c482d6664e1b28b" + "Hash": "bc4bac38960b446c183957bfd563e763" }, "robustbase": { "Package": "robustbase", @@ -935,24 +977,24 @@ }, "rprojroot": { "Package": "rprojroot", - "Version": "1.3-2", + "Version": "2.0.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae" + "Hash": "249d8cd1e74a8f6a26194a91b47f21d1" }, "rstudioapi": { "Package": "rstudioapi", - "Version": "0.11", + "Version": "0.13", "Source": "Repository", "Repository": "CRAN", - "Hash": "33a5b27a03da82ac4b1d43268f80088a" + "Hash": "06c85365a03fdaf699966cc1d3cf53ea" }, "rvest": { "Package": "rvest", - "Version": "0.3.5", + "Version": "0.3.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "6a20c2cdf133ebc7ac45888c9ccc052b" + "Hash": "a9795ccb2d608330e841998b67156764" }, "scales": { "Package": "scales", @@ -970,17 +1012,17 @@ }, "shape": { "Package": "shape", - "Version": "1.4.4", + "Version": "1.4.5", "Source": "Repository", "Repository": "CRAN", - "Hash": "ef692f72a633981cad0d4950a5775702" + "Hash": "58510f25472de6fd363d76698d29709e" }, "shiny": { "Package": "shiny", - "Version": "1.4.0.2", + "Version": "1.5.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "a56d058adfc9df30bdd45dbb01cec39f" + "Hash": "ee4ed72d7a5047d9e73cf922ad66e9c9" }, "sourcetools": { "Package": "sourcetools", @@ -991,17 +1033,17 @@ }, "spatial": { "Package": "spatial", - "Version": "7.3-11", + "Version": "7.3-12", "Source": "Repository", "Repository": "CRAN", - "Hash": "f27a078d834614513608da2c08031130" + "Hash": "58a02ce0150652b96c044bc67a0df2e5" }, "stringi": { "Package": "stringi", - "Version": "1.4.6", + "Version": "1.5.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "e99d8d656980d2dd416a962ae55aec90" + "Hash": "a063ebea753c92910a4cca7b18bc1f05" }, "stringr": { "Package": "stringr", @@ -1012,31 +1054,31 @@ }, "survival": { "Package": "survival", - "Version": "3.1-12", + "Version": "3.2-7", "Source": "Repository", "Repository": "CRAN", - "Hash": "1c5bb53bd428f3c42a25b7aeb983d8c7" + "Hash": "39c4ac6d22dad33db0ee37b40810ea12" }, "sys": { "Package": "sys", - "Version": "3.3", + "Version": "3.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "507f3116a38d37ad330a038b3be07b66" + "Hash": "b227d13e29222b4574486cfcbde077fa" }, "testthat": { "Package": "testthat", - "Version": "2.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0829b987b8961fb07f3b1b64a2fbc495" - }, - "tibble": { - "Package": "tibble", "Version": "3.0.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "1c61e4cad000e03b1bd687db16a75926" + "Hash": "17826764cb92d8b5aae6619896e5a161" + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "71dffd8544691c520dd8e41ed2d7e070" }, "tidygraph": { "Package": "tidygraph", @@ -1047,10 +1089,10 @@ }, "tidyr": { "Package": "tidyr", - "Version": "1.1.0", + "Version": "1.1.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "7395a05640bf91502dd475a84008d87e" + "Hash": "c40b2d5824d829190f4b825f4496dfae" }, "tidyselect": { "Package": "tidyselect", @@ -1068,10 +1110,17 @@ }, "tinytex": { "Package": "tinytex", - "Version": "0.22", + "Version": "0.28", "Source": "Repository", "Repository": "CRAN", - "Hash": "8b0712f45a05c8e79ce7ba06b249583c" + "Hash": "ff73961a77fba606fbf944dc3468e5b9" + }, + "tmvnsim": { + "Package": "tmvnsim", + "Version": "1.0-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50470c7ed0cc8099cbc17b38f0ef621f" }, "tweenr": { "Package": "tweenr", @@ -1089,10 +1138,10 @@ }, "vctrs": { "Package": "vctrs", - "Version": "0.3.0", + "Version": "0.3.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "fbf7ee297936697ec8404a22859da129" + "Hash": "5cf1957f93076c19fdc81d01409d240b" }, "viridis": { "Package": "viridis", @@ -1108,6 +1157,13 @@ "Repository": "CRAN", "Hash": "ce4f6271baa94776db692f1cb2055bee" }, + "waldo": { + "Package": "waldo", + "Version": "0.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "181d1a31b1ba2009ef20926f2ee0570c" + }, "whisker": { "Package": "whisker", "Version": "0.4", @@ -1117,17 +1173,17 @@ }, "withr": { "Package": "withr", - "Version": "2.2.0", + "Version": "2.3.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "ecd17882a0b4419545691e095b74ee89" + "Hash": "7307d79f58d1885b38c4f4f1a8cb19dd" }, "xfun": { "Package": "xfun", - "Version": "0.13", + "Version": "0.19", "Source": "Repository", "Repository": "CRAN", - "Hash": "3c1eeacd705ff1695db94bfd443b8a84" + "Hash": "a42372606cb76f34da9d090326e9f955" }, "xml2": { "Package": "xml2", diff --git a/renv/activate.R b/renv/activate.R index f71b9e85..6841a967 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -1,10 +1,8 @@ local({ - options(tidyverse.quiet = TRUE) - # the requested version of renv - version <- "0.10.0" + version <- "0.12.3" # the project directory project <- getwd() @@ -41,8 +39,12 @@ local({ # load bootstrap tools bootstrap <- function(version, library) { + # read repos (respecting override if set) + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (is.na(repos)) + repos <- getOption("repos") + # fix up repos - repos <- getOption("repos") on.exit(options(repos = repos), add = TRUE) repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" options(repos = repos) @@ -82,11 +84,19 @@ local({ renv_bootstrap_download <- function(version) { - methods <- list( - renv_bootstrap_download_cran_latest, - renv_bootstrap_download_cran_archive, - renv_bootstrap_download_github - ) + # if the renv version number has 4 components, assume it must + # be retrieved via github + nv <- numeric_version(version) + components <- unclass(nv)[[1]] + + methods <- if (length(components) == 4L) { + list(renv_bootstrap_download_github) + } else { + list( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive + ) + } for (method in methods) { path <- tryCatch(method(version), error = identity) @@ -100,19 +110,12 @@ local({ renv_bootstrap_download_cran_latest <- function(version) { - # check for renv on CRAN matching this version - db <- as.data.frame(available.packages(), stringsAsFactors = FALSE) - if (!"renv" %in% rownames(db)) - stop("renv is not available on your declared package repositories") - - entry <- db["renv", ] - if (!identical(entry$Version, version)) - stop("renv is not available on your declared package repositories") + repos <- renv_bootstrap_download_cran_latest_find(version) message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) info <- tryCatch( - download.packages("renv", destdir = tempdir()), + download.packages("renv", repos = repos, destdir = tempdir(), quiet = TRUE), condition = identity ) @@ -126,6 +129,37 @@ local({ } + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check for renv on CRAN matching this version + all <- unique(c( + getOption("repos"), + getOption("renv.bootstrap.repos", default = "https://cloud.r-project.org") + )) + + for (repos in all) { + + db <- tryCatch( + as.data.frame(available.packages(repos = repos), stringsAsFactors = FALSE), + error = identity + ) + + if (inherits(db, "error")) + next + + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + return(repos) + + } + + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + renv_bootstrap_download_cran_archive <- function(version) { name <- sprintf("renv_%s.tar.gz", version) @@ -259,8 +293,11 @@ local({ return(path) path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) - if (!is.na(path)) - return(file.path(path, basename(project))) + if (!is.na(path)) { + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + name <- paste(basename(project), id, sep = "-") + return(file.path(path, name)) + } file.path(project, "renv/library") @@ -281,8 +318,8 @@ local({ paste("renv", loadedversion, sep = "@") fmt <- paste( - "renv %1$s was loaded from project library, but renv %2$s is recorded in lockfile.", - "Use `renv::record(\"%3$s\")` to record this version in the lockfile.", + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", sep = "\n" ) @@ -294,6 +331,16 @@ local({ } + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + renv_bootstrap_load <- function(project, libpath, version) { # try to load renv from the project library @@ -304,7 +351,7 @@ local({ renv_bootstrap_validate_version(version) # load the project - renv::load(project, quiet = TRUE) + renv::load(project) TRUE @@ -323,12 +370,22 @@ local({ if (renv_bootstrap_load(project, libpath, version)) return(TRUE) - # load failed; attempt to bootstrap + # load failed; inform user we're about to bootstrap + prefix <- paste("# Bootstrapping renv", version) + postfix <- paste(rep.int("-", 77L - nchar(prefix)), collapse = "") + header <- paste(prefix, postfix) + message(header) + + # perform bootstrap bootstrap(version, libpath) + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + # try again to load if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { - message("Successfully installed and loaded renv ", version, ".") + message("* Successfully installed and loaded renv ", version, ".") return(renv::load()) }