Update virtual envs

pull/108/head
JulioV 2020-12-18 14:06:28 -05:00
parent 41f19ed781
commit 079547e60d
7 changed files with 419 additions and 275 deletions

View File

@ -3,6 +3,8 @@ name: tests
on: on:
push: push:
#branches: [ develop ] #branches: [ develop ]
env:
RENV_PATHS_ROOT: ~/.local/share/renv
jobs: jobs:
test-on-latest-ubuntu: test-on-latest-ubuntu:
@ -26,7 +28,16 @@ jobs:
sudo Rscript --vanilla -e 'install.packages("rmarkdown", repos="http://cran.us.r-project.org")' sudo Rscript --vanilla -e 'install.packages("rmarkdown", repos="http://cran.us.r-project.org")'
conda env create -f environment.yml -n test-environment conda env create -f environment.yml -n test-environment
source activate test-environment source activate test-environment
snakemake -j1 renv_install - name: Cache packages
R -e 'renv::settings$use.cache(FALSE)' uses: actions/cache@v1
snakemake -j1 renv_restore with:
bash tests/scripts/run_tests.sh all test 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

View File

@ -1,4 +1,7 @@
# Change Log # Change Log
## next release (0.3.0)
- Update R and Python virtual environments
## v0.2.3 ## v0.2.3
- Fix participant IDS in the example analysis workflow - Fix participant IDS in the example analysis workflow
## v0.2.2 ## v0.2.2

View File

@ -1,17 +1,21 @@
## Python Virtual Environment ## Python Virtual Environment
### Add new packages ### 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`). 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 ### Remove packages
Uninstall packages using the same manager you used to install them `conda remove PACKAGE_NAME` or `pip uninstall PACKAGE_NAME` 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` ### Updating all packages
Make sure your Python virtual environment is active (`conda activate YOUR_ENV`), then run
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:
```bash ```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 ## 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 2. Run `R` to open an R interactive session
3. Run `renv::remove("PACKAGE_NAME")` 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` ### 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. After installing or removing a package you can use the following command in your terminal to update your `renv.lock` before publishing your pipeline.

View File

@ -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-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? ## 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. 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.

View File

@ -1,102 +1,109 @@
name: rapids202007 name: rapids202012
channels: channels:
- anaconda
- conda-forge - conda-forge
- defaults - defaults
dependencies: dependencies:
- _py-xgboost-mutex=2.0 - _py-xgboost-mutex=2.0
- appdirs=1.4.3 - appdirs=1.4.4
- arrow=0.15.2 - arrow=0.16.0
- asn1crypto=1.2.0 - asn1crypto=1.4.0
- astropy=4.0.1.post1 - astropy=4.2
- attrs=19.3.0 - attrs=20.3.0
- binaryornot=0.4.4 - binaryornot=0.4.4
- blas=1.0 - blas=1.0
- brotlipy=0.7.0
- bzip2=1.0.8 - bzip2=1.0.8
- ca-certificates=2020.6.20 - ca-certificates=2020.12.8
- certifi=2020.6.20 - certifi=2020.12.5
- cffi=1.13.1 - cffi=1.14.4
- chardet=3.0.4 - chardet=3.0.4
- click=7.0 - click=7.1.2
- cookiecutter=1.6.0 - cookiecutter=1.6.0
- cryptography=2.7 - cryptography=3.3.1
- datrie=0.8.2 - datrie=0.8.2
- docutils=0.15.2 - docutils=0.16
- future=0.18.1 - future=0.18.2
- gitdb2=2.0.6 - gitdb=4.0.5
- gitpython=3.0.4 - gitdb2=4.0.2
- idna=2.8 - gitpython=3.1.11
- idna=2.10
- imbalanced-learn=0.6.2 - imbalanced-learn=0.6.2
- importlib_metadata=0.23 - importlib-metadata=2.0.0
- importlib_metadata=2.0.0
- intel-openmp=2019.4 - intel-openmp=2019.4
- jinja2=2.10.3 - jinja2=2.11.2
- jinja2-time=0.2.0 - jinja2-time=0.2.0
- joblib=0.16.0 - joblib=1.0.0
- jsonschema=3.1.1 - jsonschema=3.2.0
- libblas=3.8.0 - libblas=3.8.0
- libcblas=3.8.0 - libcblas=3.8.0
- libcxx=9.0.0 - libcxx=10.0.0
- libedit=3.1.20181209 - libedit=3.1.20191231
- libffi=3.2.1 - libffi=3.3
- libgfortran - libgfortran
- liblapack=3.8.0 - liblapack=3.8.0
- libxgboost=0.90 - libxgboost=0.90
- lightgbm=2.3.0 - lightgbm=3.1.1
- llvm-openmp=10.0.0 - llvm-openmp=10.0.0
- markupsafe=1.1.1 - markupsafe=1.1.1
- mkl=2019.4 - mkl
- mkl-service=2.3.0 - mkl-service=2.3.0
- mkl_fft=1.0.14 - mkl_fft=1.2.0
- mkl_random=1.1.0 - mkl_random=1.1.1
- more-itertools=7.2.0 - more-itertools=8.6.0
- ncurses=6.1 - ncurses=6.2
- numpy=1.17.2 - numpy=1.19.2
- numpy-base=1.17.2 - numpy-base=1.19.2
- openssl=1.1.1g - openssl=1.1.1i
- pandas=0.25.2 - pandas=1.1.5
- pbr=5.4.3 - pbr=5.5.1
- pip=19.3.1 - pip=20.3.3
- plotly=4.2.1 - plotly=4.14.1
- poyo=0.5.0 - poyo=0.5.0
- psutil=5.6.3 - psutil=5.7.2
- py-xgboost=0.90 - py-xgboost=0.90
- pycparser=2.19 - pycparser=2.20
- pyopenssl=19.0.0 - pyerfa=1.7.1.1
- pyopenssl=20.0.1
- pysocks=1.7.1 - pysocks=1.7.1
- python=3.7.3 - python=3.7.9
- python-dateutil=2.8.0 - python-dateutil=2.8.1
- python_abi=3.7 - python_abi=3.7
- pytz=2019.3 - pytz=2020.4
- pyyaml=5.1.2 - pyyaml=5.3.1
- readline=8.0 - readline=8.0
- requests=2.22.0 - requests=2.25.0
- retrying=1.3.3 - retrying=1.3.3
- scikit-learn=0.22.1 - scikit-learn=0.23.2
- scipy=1.3.1 - scipy=1.5.2
- setuptools=41.6.0 - setuptools=51.0.0
- six=1.12.0 - six=1.15.0
- smmap2=2.0.5 - smmap=3.0.4
- sqlite=3.30.1 - smmap2=3.0.1
- tk=8.6.9 - sqlite=3.33.0
- urllib3=1.25.6 - threadpoolctl=2.1.0
- wheel=0.33.6 - tk=8.6.10
- urllib3=1.25.11
- wheel=0.36.2
- whichcraft=0.6.1 - whichcraft=0.6.1
- wrapt=1.11.2 - wrapt=1.12.1
- xgboost=0.90 - xgboost=0.90
- xz=5.2.4 - xz=5.2.5
- yaml=0.1.7 - yaml=0.2.5
- zipp=0.6.0 - zipp=3.4.0
- zlib=1.2.11 - zlib=1.2.11
- pip: - pip:
- amply==0.1.4
- configargparse==0.15.1 - configargparse==0.15.1
- decorator==4.4.2 - decorator==4.4.2
- ipython-genutils==0.2.0 - ipython-genutils==0.2.0
- jupyter-core==4.6.3 - jupyter-core==4.6.3
- nbformat==5.0.7 - nbformat==5.0.7
- pulp==2.4
- pyparsing==2.4.7
- pyrsistent==0.15.5 - pyrsistent==0.15.5
- ratelimiter==1.2.0.post0 - ratelimiter==1.2.0.post0
- snakemake==5.20.1 - snakemake==5.30.2
- toposort==1.5 - toposort==1.5
- traitlets==4.3.3 - traitlets==4.3.3
prefix: /usr/local/Caskroom/miniconda/base/envs/rapids202007 prefix: /usr/local/Caskroom/miniconda/base/envs/rapids202012

416
renv.lock
View File

@ -11,10 +11,10 @@
"Packages": { "Packages": {
"BDgraph": { "BDgraph": {
"Package": "BDgraph", "Package": "BDgraph",
"Version": "2.62", "Version": "2.63",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "c2b632b048e00a670495f2804767159f" "Hash": "81946367dff8885e6d87e4e12ffc5f92"
}, },
"BH": { "BH": {
"Package": "BH", "Package": "BH",
@ -39,31 +39,31 @@
}, },
"Formula": { "Formula": {
"Package": "Formula", "Package": "Formula",
"Version": "1.2-3", "Version": "1.2-4",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "0537b6f1f38ea1fd514089192724bb6e" "Hash": "cc8c8c4d61346cde1ca60030ff9c241f"
}, },
"Hmisc": { "Hmisc": {
"Package": "Hmisc", "Package": "Hmisc",
"Version": "4.4-0", "Version": "4.4-2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "1016ef46c7ebf841513624ecb22eebc7" "Hash": "66458e906b2112a8b1639964efd77d7c"
}, },
"KernSmooth": { "KernSmooth": {
"Package": "KernSmooth", "Package": "KernSmooth",
"Version": "2.23-16", "Version": "2.23-18",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "997471f25a7ed6c782f0090ce52cc63a" "Hash": "9e703ad8bf0e99f3691f05da32dfe68b"
}, },
"MASS": { "MASS": {
"Package": "MASS", "Package": "MASS",
"Version": "7.3-51.6", "Version": "7.3-53",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "1dad32ac9dbd8057167b2979fb932ff7" "Hash": "d1bc1c8e9c0ace57ec9ffea01021d45f"
}, },
"Matrix": { "Matrix": {
"Package": "Matrix", "Package": "Matrix",
@ -74,10 +74,10 @@
}, },
"R6": { "R6": {
"Package": "R6", "Package": "R6",
"Version": "2.4.1", "Version": "2.5.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "292b54f8f4b94669b08f94e5acce6be2" "Hash": "b203113193e70978a696b2809525649d"
}, },
"RColorBrewer": { "RColorBrewer": {
"Package": "RColorBrewer", "Package": "RColorBrewer",
@ -88,31 +88,31 @@
}, },
"RMariaDB": { "RMariaDB": {
"Package": "RMariaDB", "Package": "RMariaDB",
"Version": "1.0.10", "Version": "1.0.11",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "d149479ea03e5cbb1e788449ef5e04b4" "Hash": "0e4f634f2bb38e325717d384a877ccc0"
}, },
"Rcpp": { "Rcpp": {
"Package": "Rcpp", "Package": "Rcpp",
"Version": "1.0.4.6", "Version": "1.0.5",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "e652f23d8b1807cc975c51410d05b72f" "Hash": "125dc7a0ed375eb68c0ce533b48d291f"
}, },
"RcppArmadillo": { "RcppArmadillo": {
"Package": "RcppArmadillo", "Package": "RcppArmadillo",
"Version": "0.9.870.2.0", "Version": "0.10.1.2.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "f7fee4557377d47093bd2b65f2642e52" "Hash": "1a885965adade4b8629c478a3b3c2cf7"
}, },
"RcppEigen": { "RcppEigen": {
"Package": "RcppEigen", "Package": "RcppEigen",
"Version": "0.3.3.7.0", "Version": "0.3.3.9.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "c6faf038ba4346b1de19ad7c99b8f94a" "Hash": "ddfa72a87fdf4c80466a20818be91d00"
}, },
"abind": { "abind": {
"Package": "abind", "Package": "abind",
@ -144,10 +144,10 @@
}, },
"backports": { "backports": {
"Package": "backports", "Package": "backports",
"Version": "1.1.6", "Version": "1.2.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "3997fd62345a616e59e8161ee0a5816f" "Hash": "644043219fc24e190c2f620c1a380a69"
}, },
"base64enc": { "base64enc": {
"Package": "base64enc", "Package": "base64enc",
@ -170,26 +170,40 @@
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "9fe98599ca456d6552421db0d6772d8f" "Hash": "9fe98599ca456d6552421db0d6772d8f"
}, },
"boot": { "blob": {
"Package": "boot", "Package": "blob",
"Version": "1.3-24", "Version": "1.2.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "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": { "broom": {
"Package": "broom", "Package": "broom",
"Version": "0.5.6", "Version": "0.7.3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "754fdb4d17d4ae871343ff2909728ca3" "Hash": "5581a5ddc8fe2ac5e0d092ec2de4c4ae"
}, },
"callr": { "callr": {
"Package": "callr", "Package": "callr",
"Version": "3.4.3", "Version": "3.5.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "643163a00cb536454c624883a10ae0bc" "Hash": "b7d7f1e926dfcd57c74ce93f5c048e80"
}, },
"cellranger": { "cellranger": {
"Package": "cellranger", "Package": "cellranger",
@ -207,24 +221,24 @@
}, },
"class": { "class": {
"Package": "class", "Package": "class",
"Version": "7.3-16", "Version": "7.3-17",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ebc639c4432a2e9c17f195d004848100" "Hash": "9267f5dab59a4ef44229858a142bded1"
}, },
"cli": { "cli": {
"Package": "cli", "Package": "cli",
"Version": "2.0.2", "Version": "2.2.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ff0becff7bfdfe3f75d29aff8f3172dd" "Hash": "3ef298932294b775fa0a3eeaa3a645b0"
}, },
"clipr": { "clipr": {
"Package": "clipr", "Package": "clipr",
"Version": "0.7.0", "Version": "0.7.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "08cf4045c149a0f0eaf405324c7495bd" "Hash": "ebaa97ac99cc2daf04e77eecc7b781d7"
}, },
"cluster": { "cluster": {
"Package": "cluster", "Package": "cluster",
@ -235,17 +249,24 @@
}, },
"codetools": { "codetools": {
"Package": "codetools", "Package": "codetools",
"Version": "0.2-16", "Version": "0.2-18",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "89cf4b8207269ccf82fbeb6473fd662b" "Hash": "019388fc48e48b3da0d3a76ff94608a8"
}, },
"colorspace": { "colorspace": {
"Package": "colorspace", "Package": "colorspace",
"Version": "1.4-1", "Version": "2.0-0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "6b436e95723d1f0e861224dd9b094dfb" "Hash": "abea3384649ef37f60ef51ce002f3547"
},
"commonmark": {
"Package": "commonmark",
"Version": "1.7",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "0f22be39ec1d141fd03683c06f3a6e67"
}, },
"corpcor": { "corpcor": {
"Package": "corpcor", "Package": "corpcor",
@ -254,6 +275,13 @@
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ae01381679f4511ca7a72d55fe175213" "Hash": "ae01381679f4511ca7a72d55fe175213"
}, },
"cpp11": {
"Package": "cpp11",
"Version": "0.2.4",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "ba66e5a750d39067d888aa7af797fed2"
},
"crayon": { "crayon": {
"Package": "crayon", "Package": "crayon",
"Version": "1.3.4", "Version": "1.3.4",
@ -277,17 +305,17 @@
}, },
"data.table": { "data.table": {
"Package": "data.table", "Package": "data.table",
"Version": "1.12.8", "Version": "1.13.4",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "cd711af60c47207a776213a368626369" "Hash": "626afb25b020646f53105e6485e695c6"
}, },
"dbplyr": { "dbplyr": {
"Package": "dbplyr", "Package": "dbplyr",
"Version": "1.4.3", "Version": "2.0.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "81ae261735c247d9551126462db5a4b5" "Hash": "714005206038b1dda74cb1de85029a20"
}, },
"desc": { "desc": {
"Package": "desc", "Package": "desc",
@ -296,26 +324,33 @@
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "6c8fe8fa26a23b79949375d372c7b395" "Hash": "6c8fe8fa26a23b79949375d372c7b395"
}, },
"digest": { "diffobj": {
"Package": "digest", "Package": "diffobj",
"Version": "0.6.25", "Version": "0.3.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "f697db7d92b7028c4b3436e9603fb636" "Hash": "16533929cf545f3c9b796780cccf5eff"
},
"digest": {
"Package": "digest",
"Version": "0.6.27",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "a0cbe758a531d054b537d16dff4d58a1"
}, },
"dplyr": { "dplyr": {
"Package": "dplyr", "Package": "dplyr",
"Version": "0.8.5", "Version": "1.0.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "57a42ddf80f429764ff7987128c3fd0a" "Hash": "d0509913b27ea898189ee664b6030dc2"
}, },
"ellipsis": { "ellipsis": {
"Package": "ellipsis", "Package": "ellipsis",
"Version": "0.3.0", "Version": "0.3.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "7067d90c1c780bfe80c0d497e3d7b49d" "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a"
}, },
"entropy": { "entropy": {
"Package": "entropy", "Package": "entropy",
@ -368,59 +403,59 @@
}, },
"foreach": { "foreach": {
"Package": "foreach", "Package": "foreach",
"Version": "1.5.0", "Version": "1.5.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "8fb3ff01ee7d85893f56df8d77213381" "Hash": "e32cfc0973caba11b65b1fa691b4d8c9"
}, },
"foreign": { "foreign": {
"Package": "foreign", "Package": "foreign",
"Version": "0.8-79", "Version": "0.8-80",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "910ad5e5ce9aae0d0f57186ca9a12e1e" "Hash": "ae1b1e15cc6ccb2bc61c0ac33e86d35f"
}, },
"fs": { "fs": {
"Package": "fs", "Package": "fs",
"Version": "1.4.1", "Version": "1.5.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "780713bd2f53156fae001443dcdbdcd5" "Hash": "44594a07a42e5f91fac9f93fda6d0109"
}, },
"generics": { "generics": {
"Package": "generics", "Package": "generics",
"Version": "0.0.2", "Version": "0.1.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "b8cff1d1391fd1ad8b65877f4c7f2e53" "Hash": "4d243a9c10b00589889fe32314ffd902"
}, },
"ggforce": { "ggforce": {
"Package": "ggforce", "Package": "ggforce",
"Version": "0.3.1", "Version": "0.3.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "b7132d67f9814af0536cd5761be94314" "Hash": "4adaf6b01b41f243ba0c62801de3331e"
}, },
"ggplot2": { "ggplot2": {
"Package": "ggplot2", "Package": "ggplot2",
"Version": "3.3.0", "Version": "3.3.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "911561e07da928345f1ae2d69f97f3ea" "Hash": "4ded8b439797f7b1693bd3d238d0106b"
}, },
"ggraph": { "ggraph": {
"Package": "ggraph", "Package": "ggraph",
"Version": "2.0.2", "Version": "2.0.4",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "11efbeca93af843c5213ebae42cc2b5b" "Hash": "2a189e5cd2bbfe687ed631be27c07462"
}, },
"ggrepel": { "ggrepel": {
"Package": "ggrepel", "Package": "ggrepel",
"Version": "0.8.2", "Version": "0.9.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "c013a50b19695daf04853679e1bc105a" "Hash": "2cde657b5a57bf20ccdc8ec05fe69556"
}, },
"glasso": { "glasso": {
"Package": "glasso", "Package": "glasso",
@ -431,24 +466,24 @@
}, },
"glmnet": { "glmnet": {
"Package": "glmnet", "Package": "glmnet",
"Version": "3.0-2", "Version": "4.0-2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "96a03ce147d2a6d3e056e9da1d9c6940" "Hash": "056100917c75e6f8a0d36f8bdd552799"
}, },
"glue": { "glue": {
"Package": "glue", "Package": "glue",
"Version": "1.4.0", "Version": "1.4.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "2aefa994e8df5da17dc09afd80f924d5" "Hash": "6efd734b14c6471cfe443345f3e35e29"
}, },
"graphlayouts": { "graphlayouts": {
"Package": "graphlayouts", "Package": "graphlayouts",
"Version": "0.7.0", "Version": "0.7.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "786cadbe37487dbec2e0c91249dbbce0" "Hash": "2a0d18b9395cd27066d209b83bb29ea6"
}, },
"gridExtra": { "gridExtra": {
"Package": "gridExtra", "Package": "gridExtra",
@ -473,10 +508,10 @@
}, },
"haven": { "haven": {
"Package": "haven", "Package": "haven",
"Version": "2.2.0", "Version": "2.3.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "e3f662e125e9fdffd1ee4e94baea3451" "Hash": "221d0ad75dfa03ebf17b1a4cc5c31dfc"
}, },
"highr": { "highr": {
"Package": "highr", "Package": "highr",
@ -494,38 +529,38 @@
}, },
"htmlTable": { "htmlTable": {
"Package": "htmlTable", "Package": "htmlTable",
"Version": "1.13.3", "Version": "2.1.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "90d75b22931af95e2dbb17188e1dfa0c" "Hash": "4f2a742fc75dedafe660e3b47a37680e"
}, },
"htmltools": { "htmltools": {
"Package": "htmltools", "Package": "htmltools",
"Version": "0.4.0", "Version": "0.5.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "2d7691222f82f41e93f6d30f169bd5e1" "Hash": "7d651b7131794fe007b1ad6f21aaa401"
}, },
"htmlwidgets": { "htmlwidgets": {
"Package": "htmlwidgets", "Package": "htmlwidgets",
"Version": "1.5.1", "Version": "1.5.3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "41bace23583fbc25089edae324de2dc3" "Hash": "6fdaa86d0700f8b3e92ee3c445a5a10d"
}, },
"httpuv": { "httpuv": {
"Package": "httpuv", "Package": "httpuv",
"Version": "1.5.2", "Version": "1.5.4",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "f793dad2c9ae14fbb1d22f16f23f8326" "Hash": "4e6dabb220b006ccdc3b3b5ff993b205"
}, },
"httr": { "httr": {
"Package": "httr", "Package": "httr",
"Version": "1.4.1", "Version": "1.4.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "7146fea4685b4252ebf478978c75f597" "Hash": "a525aba14184fec243f9eaec62fbed43"
}, },
"huge": { "huge": {
"Package": "huge", "Package": "huge",
@ -536,24 +571,24 @@
}, },
"igraph": { "igraph": {
"Package": "igraph", "Package": "igraph",
"Version": "1.2.5", "Version": "1.2.6",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "3878c30ce67cdb7f2d7f72554e37f476" "Hash": "7b1f856410253d56ea67ad808f7cdff6"
}, },
"isoband": { "isoband": {
"Package": "isoband", "Package": "isoband",
"Version": "0.2.1", "Version": "0.2.3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "9b2f7cf1899f583a36d367702ecf49a3" "Hash": "53647fb507373700028b2ce6cd30751a"
}, },
"iterators": { "iterators": {
"Package": "iterators", "Package": "iterators",
"Version": "1.0.12", "Version": "1.0.13",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "117128f48662573ff4c4e72608b9e202" "Hash": "64778782a89480e9a644f69aad9a2877"
}, },
"jpeg": { "jpeg": {
"Package": "jpeg", "Package": "jpeg",
@ -564,31 +599,31 @@
}, },
"jsonlite": { "jsonlite": {
"Package": "jsonlite", "Package": "jsonlite",
"Version": "1.6.1", "Version": "1.7.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "84b0ee361e2f78d6b7d670db9471c0c5" "Hash": "98138e0994d41508c7a6b84a0600cfcb"
}, },
"knitr": { "knitr": {
"Package": "knitr", "Package": "knitr",
"Version": "1.28", "Version": "1.30",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "915a6f0134cdbdf016d7778bc80b2eda" "Hash": "eed7ee0d02eee88d53881cdc92457c62"
}, },
"labeling": { "labeling": {
"Package": "labeling", "Package": "labeling",
"Version": "0.3", "Version": "0.4.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "73832978c1de350df58108c745ed0e3e" "Hash": "3d5108641f47470611a32d0bdf357a72"
}, },
"later": { "later": {
"Package": "later", "Package": "later",
"Version": "1.0.0", "Version": "1.1.0.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "6d927978fc658d24175ce37db635f9e5" "Hash": "d0a62b247165aabf397fded504660d8a"
}, },
"lattice": { "lattice": {
"Package": "lattice", "Package": "lattice",
@ -606,10 +641,10 @@
}, },
"lavaan": { "lavaan": {
"Package": "lavaan", "Package": "lavaan",
"Version": "0.6-5", "Version": "0.6-7",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "898f1cb9457e5afeaaf6c43c8ffbd72b" "Hash": "6cc8bb26e9deab15394d48d5ded61ce2"
}, },
"lifecycle": { "lifecycle": {
"Package": "lifecycle", "Package": "lifecycle",
@ -620,17 +655,17 @@
}, },
"lubridate": { "lubridate": {
"Package": "lubridate", "Package": "lubridate",
"Version": "1.7.8", "Version": "1.7.9.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "6c04c31012c1be39783bebbbfc27b3a3" "Hash": "5b5b02f621d39a499def7923a5aee746"
}, },
"magrittr": { "magrittr": {
"Package": "magrittr", "Package": "magrittr",
"Version": "1.5", "Version": "2.0.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "1bb58822a20301cee84a41678e25d9b7" "Hash": "41287f1ac7d28a92f0a286ed507928d3"
}, },
"markdown": { "markdown": {
"Package": "markdown", "Package": "markdown",
@ -648,17 +683,17 @@
}, },
"mgcv": { "mgcv": {
"Package": "mgcv", "Package": "mgcv",
"Version": "1.8-31", "Version": "1.8-33",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "4bb7e0c4f3557583e1e8d3c9ffb8ba5c" "Hash": "eb7b6439bc6d812eed2cddba5edc6be3"
}, },
"mgm": { "mgm": {
"Package": "mgm", "Package": "mgm",
"Version": "1.2-9", "Version": "1.2-10",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "15782a10391af182d7b42c3b3971de9a" "Hash": "6a82e040f714adcd21a249d718dee637"
}, },
"mime": { "mime": {
"Package": "mime", "Package": "mime",
@ -669,17 +704,17 @@
}, },
"mnormt": { "mnormt": {
"Package": "mnormt", "Package": "mnormt",
"Version": "1.5-7", "Version": "2.0.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "74b6d3efd46009b9304a7d760fd20e03" "Hash": "7e6ee68a01d6c87c69087d4a250ee763"
}, },
"modelr": { "modelr": {
"Package": "modelr", "Package": "modelr",
"Version": "0.1.7", "Version": "0.1.8",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "5a10316936c16bb3b341f687c9ac0fff" "Hash": "9fd59716311ee82cba83dc2826fc5577"
}, },
"munsell": { "munsell": {
"Package": "munsell", "Package": "munsell",
@ -690,10 +725,10 @@
}, },
"nlme": { "nlme": {
"Package": "nlme", "Package": "nlme",
"Version": "3.1-147", "Version": "3.1-151",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "dd4a1423f1472a2a8e05dd2c8945c3af" "Hash": "42c8ba2b6a32a6bf0874e93e3bd86a43"
}, },
"nnet": { "nnet": {
"Package": "nnet", "Package": "nnet",
@ -711,10 +746,10 @@
}, },
"openssl": { "openssl": {
"Package": "openssl", "Package": "openssl",
"Version": "1.4.1", "Version": "1.4.3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "49f7258fd86ebeaea1df24d9ded00478" "Hash": "a399e4773075fc2375b71f45fca186c4"
}, },
"packrat": { "packrat": {
"Package": "packrat", "Package": "packrat",
@ -725,10 +760,10 @@
}, },
"pbapply": { "pbapply": {
"Package": "pbapply", "Package": "pbapply",
"Version": "1.4-2", "Version": "1.4-3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ee90507ce37987b22470fae76325f370" "Hash": "52f8028b028076bc3b7ee5d6251abf0d"
}, },
"pbivnorm": { "pbivnorm": {
"Package": "pbivnorm", "Package": "pbivnorm",
@ -739,17 +774,17 @@
}, },
"pillar": { "pillar": {
"Package": "pillar", "Package": "pillar",
"Version": "1.4.4", "Version": "1.4.7",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "b01d2494d0e2b6b02fae40e1543fbcb0" "Hash": "3b3dd89b2ee115a8b54e93a34cd546b4"
}, },
"pkgbuild": { "pkgbuild": {
"Package": "pkgbuild", "Package": "pkgbuild",
"Version": "1.0.8", "Version": "1.2.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "8d8b5e29223aabb829246397299f0592" "Hash": "725fcc30222d4d11ec68efb8ff11a9af"
}, },
"pkgconfig": { "pkgconfig": {
"Package": "pkgconfig", "Package": "pkgconfig",
@ -760,10 +795,10 @@
}, },
"pkgload": { "pkgload": {
"Package": "pkgload", "Package": "pkgload",
"Version": "1.0.2", "Version": "1.1.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "5e655fb54cceead0f095f22d7be33da3" "Hash": "b6b150cd4709e0c0c9b5d51ac4376282"
}, },
"plogr": { "plogr": {
"Package": "plogr", "Package": "plogr",
@ -809,10 +844,10 @@
}, },
"processx": { "processx": {
"Package": "processx", "Package": "processx",
"Version": "3.4.2", "Version": "3.4.5",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "20a082f2bde0ffcd8755779fd476a274" "Hash": "22aab6098cb14edd0a5973a8438b569b"
}, },
"progress": { "progress": {
"Package": "progress", "Package": "progress",
@ -823,24 +858,24 @@
}, },
"promises": { "promises": {
"Package": "promises", "Package": "promises",
"Version": "1.1.0", "Version": "1.1.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "efbbe62da4709f7040a380c702bc7103" "Hash": "a8730dcbdd19f9047774909f0ec214a4"
}, },
"ps": { "ps": {
"Package": "ps", "Package": "ps",
"Version": "1.3.3", "Version": "1.5.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "425d938eb9c02906a8ac98c0c2a306b5" "Hash": "ebaed51a03411fd5cfc1e12d9079b353"
}, },
"psych": { "psych": {
"Package": "psych", "Package": "psych",
"Version": "1.9.12.31", "Version": "2.0.12",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "fb8cedacb2ded44bbfc6c2e028ebecde" "Hash": "9345dffe01b539d1c0b00eef80c51adf"
}, },
"purrr": { "purrr": {
"Package": "purrr", "Package": "purrr",
@ -858,10 +893,10 @@
}, },
"readr": { "readr": {
"Package": "readr", "Package": "readr",
"Version": "1.3.1", "Version": "1.4.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "af8ab99cd936773a148963905736907b" "Hash": "2639976851f71f330264a9c9c3d43a61"
}, },
"readxl": { "readxl": {
"Package": "readxl", "Package": "readxl",
@ -877,12 +912,19 @@
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "c66b930d20bb6d858cd18e1cebcfae5c" "Hash": "c66b930d20bb6d858cd18e1cebcfae5c"
}, },
"renv": { "rematch2": {
"Package": "renv", "Package": "rematch2",
"Version": "0.10.0", "Version": "2.1.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "0d3f1c2b63e70b3d918246b4e2ca59b7" "Hash": "76c9e04c712a05848ae7a23d2f170a40"
},
"renv": {
"Package": "renv",
"Version": "0.12.3",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "b5510c50c7f31d453c385c7b460af2b9"
}, },
"reprex": { "reprex": {
"Package": "reprex", "Package": "reprex",
@ -907,17 +949,17 @@
}, },
"rlang": { "rlang": {
"Package": "rlang", "Package": "rlang",
"Version": "0.4.6", "Version": "0.4.9",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "aa263e3ce17b177c49e0daade2ee3cdc" "Hash": "9d7aba7bed9a79e2403b4777428a2b12"
}, },
"rmarkdown": { "rmarkdown": {
"Package": "rmarkdown", "Package": "rmarkdown",
"Version": "2.1", "Version": "2.6",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "9d1c61d476c448350c482d6664e1b28b" "Hash": "bc4bac38960b446c183957bfd563e763"
}, },
"robustbase": { "robustbase": {
"Package": "robustbase", "Package": "robustbase",
@ -935,24 +977,24 @@
}, },
"rprojroot": { "rprojroot": {
"Package": "rprojroot", "Package": "rprojroot",
"Version": "1.3-2", "Version": "2.0.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae" "Hash": "249d8cd1e74a8f6a26194a91b47f21d1"
}, },
"rstudioapi": { "rstudioapi": {
"Package": "rstudioapi", "Package": "rstudioapi",
"Version": "0.11", "Version": "0.13",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "33a5b27a03da82ac4b1d43268f80088a" "Hash": "06c85365a03fdaf699966cc1d3cf53ea"
}, },
"rvest": { "rvest": {
"Package": "rvest", "Package": "rvest",
"Version": "0.3.5", "Version": "0.3.6",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "6a20c2cdf133ebc7ac45888c9ccc052b" "Hash": "a9795ccb2d608330e841998b67156764"
}, },
"scales": { "scales": {
"Package": "scales", "Package": "scales",
@ -970,17 +1012,17 @@
}, },
"shape": { "shape": {
"Package": "shape", "Package": "shape",
"Version": "1.4.4", "Version": "1.4.5",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ef692f72a633981cad0d4950a5775702" "Hash": "58510f25472de6fd363d76698d29709e"
}, },
"shiny": { "shiny": {
"Package": "shiny", "Package": "shiny",
"Version": "1.4.0.2", "Version": "1.5.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "a56d058adfc9df30bdd45dbb01cec39f" "Hash": "ee4ed72d7a5047d9e73cf922ad66e9c9"
}, },
"sourcetools": { "sourcetools": {
"Package": "sourcetools", "Package": "sourcetools",
@ -991,17 +1033,17 @@
}, },
"spatial": { "spatial": {
"Package": "spatial", "Package": "spatial",
"Version": "7.3-11", "Version": "7.3-12",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "f27a078d834614513608da2c08031130" "Hash": "58a02ce0150652b96c044bc67a0df2e5"
}, },
"stringi": { "stringi": {
"Package": "stringi", "Package": "stringi",
"Version": "1.4.6", "Version": "1.5.3",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "e99d8d656980d2dd416a962ae55aec90" "Hash": "a063ebea753c92910a4cca7b18bc1f05"
}, },
"stringr": { "stringr": {
"Package": "stringr", "Package": "stringr",
@ -1012,31 +1054,31 @@
}, },
"survival": { "survival": {
"Package": "survival", "Package": "survival",
"Version": "3.1-12", "Version": "3.2-7",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "1c5bb53bd428f3c42a25b7aeb983d8c7" "Hash": "39c4ac6d22dad33db0ee37b40810ea12"
}, },
"sys": { "sys": {
"Package": "sys", "Package": "sys",
"Version": "3.3", "Version": "3.4",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "507f3116a38d37ad330a038b3be07b66" "Hash": "b227d13e29222b4574486cfcbde077fa"
}, },
"testthat": { "testthat": {
"Package": "testthat", "Package": "testthat",
"Version": "2.3.2",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "0829b987b8961fb07f3b1b64a2fbc495"
},
"tibble": {
"Package": "tibble",
"Version": "3.0.1", "Version": "3.0.1",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "1c61e4cad000e03b1bd687db16a75926" "Hash": "17826764cb92d8b5aae6619896e5a161"
},
"tibble": {
"Package": "tibble",
"Version": "3.0.4",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "71dffd8544691c520dd8e41ed2d7e070"
}, },
"tidygraph": { "tidygraph": {
"Package": "tidygraph", "Package": "tidygraph",
@ -1047,10 +1089,10 @@
}, },
"tidyr": { "tidyr": {
"Package": "tidyr", "Package": "tidyr",
"Version": "1.1.0", "Version": "1.1.2",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "7395a05640bf91502dd475a84008d87e" "Hash": "c40b2d5824d829190f4b825f4496dfae"
}, },
"tidyselect": { "tidyselect": {
"Package": "tidyselect", "Package": "tidyselect",
@ -1068,10 +1110,17 @@
}, },
"tinytex": { "tinytex": {
"Package": "tinytex", "Package": "tinytex",
"Version": "0.22", "Version": "0.28",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "8b0712f45a05c8e79ce7ba06b249583c" "Hash": "ff73961a77fba606fbf944dc3468e5b9"
},
"tmvnsim": {
"Package": "tmvnsim",
"Version": "1.0-2",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "50470c7ed0cc8099cbc17b38f0ef621f"
}, },
"tweenr": { "tweenr": {
"Package": "tweenr", "Package": "tweenr",
@ -1089,10 +1138,10 @@
}, },
"vctrs": { "vctrs": {
"Package": "vctrs", "Package": "vctrs",
"Version": "0.3.0", "Version": "0.3.6",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "fbf7ee297936697ec8404a22859da129" "Hash": "5cf1957f93076c19fdc81d01409d240b"
}, },
"viridis": { "viridis": {
"Package": "viridis", "Package": "viridis",
@ -1108,6 +1157,13 @@
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ce4f6271baa94776db692f1cb2055bee" "Hash": "ce4f6271baa94776db692f1cb2055bee"
}, },
"waldo": {
"Package": "waldo",
"Version": "0.2.3",
"Source": "Repository",
"Repository": "CRAN",
"Hash": "181d1a31b1ba2009ef20926f2ee0570c"
},
"whisker": { "whisker": {
"Package": "whisker", "Package": "whisker",
"Version": "0.4", "Version": "0.4",
@ -1117,17 +1173,17 @@
}, },
"withr": { "withr": {
"Package": "withr", "Package": "withr",
"Version": "2.2.0", "Version": "2.3.0",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "ecd17882a0b4419545691e095b74ee89" "Hash": "7307d79f58d1885b38c4f4f1a8cb19dd"
}, },
"xfun": { "xfun": {
"Package": "xfun", "Package": "xfun",
"Version": "0.13", "Version": "0.19",
"Source": "Repository", "Source": "Repository",
"Repository": "CRAN", "Repository": "CRAN",
"Hash": "3c1eeacd705ff1695db94bfd443b8a84" "Hash": "a42372606cb76f34da9d090326e9f955"
}, },
"xml2": { "xml2": {
"Package": "xml2", "Package": "xml2",

View File

@ -1,10 +1,8 @@
local({ local({
options(tidyverse.quiet = TRUE)
# the requested version of renv # the requested version of renv
version <- "0.10.0" version <- "0.12.3"
# the project directory # the project directory
project <- getwd() project <- getwd()
@ -41,8 +39,12 @@ local({
# load bootstrap tools # load bootstrap tools
bootstrap <- function(version, library) { bootstrap <- function(version, library) {
# fix up repos # read repos (respecting override if set)
repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA)
if (is.na(repos))
repos <- getOption("repos") repos <- getOption("repos")
# fix up repos
on.exit(options(repos = repos), add = TRUE) on.exit(options(repos = repos), add = TRUE)
repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" repos[repos == "@CRAN@"] <- "https://cloud.r-project.org"
options(repos = repos) options(repos = repos)
@ -82,11 +84,19 @@ local({
renv_bootstrap_download <- function(version) { renv_bootstrap_download <- function(version) {
methods <- list( # 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_latest,
renv_bootstrap_download_cran_archive, renv_bootstrap_download_cran_archive
renv_bootstrap_download_github
) )
}
for (method in methods) { for (method in methods) {
path <- tryCatch(method(version), error = identity) path <- tryCatch(method(version), error = identity)
@ -100,19 +110,12 @@ local({
renv_bootstrap_download_cran_latest <- function(version) { renv_bootstrap_download_cran_latest <- function(version) {
# check for renv on CRAN matching this version repos <- renv_bootstrap_download_cran_latest_find(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")
message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE)
info <- tryCatch( info <- tryCatch(
download.packages("renv", destdir = tempdir()), download.packages("renv", repos = repos, destdir = tempdir(), quiet = TRUE),
condition = identity 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) { renv_bootstrap_download_cran_archive <- function(version) {
name <- sprintf("renv_%s.tar.gz", version) name <- sprintf("renv_%s.tar.gz", version)
@ -259,8 +293,11 @@ local({
return(path) return(path)
path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA)
if (!is.na(path)) if (!is.na(path)) {
return(file.path(path, basename(project))) 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") file.path(project, "renv/library")
@ -281,8 +318,8 @@ local({
paste("renv", loadedversion, sep = "@") paste("renv", loadedversion, sep = "@")
fmt <- paste( fmt <- paste(
"renv %1$s was loaded from project library, but renv %2$s is recorded in 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 this version in the lockfile.", "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.", "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.",
sep = "\n" 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) { renv_bootstrap_load <- function(project, libpath, version) {
# try to load renv from the project library # try to load renv from the project library
@ -304,7 +351,7 @@ local({
renv_bootstrap_validate_version(version) renv_bootstrap_validate_version(version)
# load the project # load the project
renv::load(project, quiet = TRUE) renv::load(project)
TRUE TRUE
@ -323,12 +370,22 @@ local({
if (renv_bootstrap_load(project, libpath, version)) if (renv_bootstrap_load(project, libpath, version))
return(TRUE) 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) 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 # try again to load
if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { 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()) return(renv::load())
} }