diff --git a/README.md b/README.md index 4e4ef2d..d1267d5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # uniswap-forecast Absurdly tight and constantly changing liquidity ranges for Uniswap v3. + +# NOTE + +For MacOS 12.4+ Monterey (i.e., M1 processors) the big number C library GMP MUST +use the arm64 architecture; NOT x86_64. diff --git a/renv.lock b/renv.lock index 3b5c6ae..53e33e5 100644 --- a/renv.lock +++ b/renv.lock @@ -11,18 +11,18 @@ "Packages": { "MASS": { "Package": "MASS", - "Version": "7.3-57", + "Version": "7.3-58.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "71476c1d88d1ebdf31580e5a257d5d31", + "Hash": "762e1804143a332333c054759f89a706", "Requirements": [] }, "Matrix": { "Package": "Matrix", - "Version": "1.4-1", + "Version": "1.5-1", "Source": "Repository", "Repository": "CRAN", - "Hash": "699c47c606293bdfbc9fd78a93c9c8fe", + "Hash": "539dc0c0c05636812f1080f473d2c177", "Requirements": [ "lattice" ] @@ -98,10 +98,10 @@ }, "cli": { "Package": "cli", - "Version": "3.4.0", + "Version": "3.4.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "78003c09d258968a4d28107e779edb10", + "Hash": "0d297d01734d2bcea40197bd4971a764", "Requirements": [] }, "colorspace": { @@ -114,10 +114,10 @@ }, "cpp11": { "Package": "cpp11", - "Version": "0.4.2", + "Version": "0.4.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "fa53ce256cd280f468c080a58ea5ba8c", + "Hash": "ed588261931ee3be2c700d22e94a29ab", "Requirements": [] }, "crosstalk": { @@ -135,26 +135,26 @@ }, "curl": { "Package": "curl", - "Version": "4.3.2", + "Version": "4.3.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "022c42d49c28e95d69ca60446dbabf88", + "Hash": "0eb86baa62f06e8855258fa5a8048667", "Requirements": [] }, "data.table": { "Package": "data.table", - "Version": "1.14.2", + "Version": "1.14.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "36b67b5adf57b292923f5659f5f0c853", + "Hash": "b9b912b41064aaa79270f24d123c887d", "Requirements": [] }, "digest": { "Package": "digest", - "Version": "0.6.29", + "Version": "0.6.30", "Source": "Repository", "Repository": "CRAN", - "Hash": "cf6b206a045a684728c3267ef7596190", + "Hash": "bf1cd206a5d170d132ef75c7537b9bdb", "Requirements": [] }, "dplyr": { @@ -188,10 +188,10 @@ }, "evaluate": { "Package": "evaluate", - "Version": "0.16", + "Version": "0.17", "Source": "Repository", "Repository": "CRAN", - "Hash": "9a3d3c345f8a5648abe61608aaa29518", + "Hash": "9171b012a55a1ef53f1442b1d798a3b4", "Requirements": [] }, "fansi": { @@ -261,6 +261,14 @@ "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", "Requirements": [] }, + "gmp": { + "Package": "gmp", + "Version": "0.6-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2fd4c6cca3012e2047dc3a8287501fd", + "Requirements": [] + }, "gtable": { "Package": "gtable", "Version": "0.3.1", @@ -320,10 +328,10 @@ }, "isoband": { "Package": "isoband", - "Version": "0.2.5", + "Version": "0.2.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "7ab57a6de7f48a8dc84910d1eca42883", + "Hash": "cfdea9dea85c1a973991c8cbe299f4da", "Requirements": [] }, "jquerylib": { @@ -338,10 +346,10 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.0", + "Version": "1.8.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "d07e729b27b372429d42d24d503613a0", + "Hash": "2e7ed071fd6bd047fe2366d3adf4fe46", "Requirements": [] }, "knitr": { @@ -395,11 +403,12 @@ }, "lifecycle": { "Package": "lifecycle", - "Version": "1.0.2", + "Version": "1.0.3", "Source": "Repository", "Repository": "CRAN", - "Hash": "25f74670fa7d3277fe3ad8c1712a699f", + "Hash": "001cecbeac1cff9301bdc3775ee46a86", "Requirements": [ + "cli", "glue", "rlang" ] @@ -454,20 +463,20 @@ }, "nlme": { "Package": "nlme", - "Version": "3.1-157", + "Version": "3.1-160", "Source": "Repository", "Repository": "CRAN", - "Hash": "dbca60742be0c9eddc5205e5c7ca1f44", + "Hash": "02e3c6e7df163aafa8477225e6827bc5", "Requirements": [ "lattice" ] }, "openssl": { "Package": "openssl", - "Version": "2.0.3", + "Version": "2.0.4", "Source": "Repository", "Repository": "CRAN", - "Hash": "b9621e75c0652041002a19609fb23c5a", + "Hash": "e86c5ffeb8474a9e03d75f5d2919683e", "Requirements": [ "askpass" ] @@ -542,10 +551,10 @@ }, "purrr": { "Package": "purrr", - "Version": "0.3.4", + "Version": "0.3.5", "Source": "Repository", "Repository": "CRAN", - "Hash": "97def703420c8ab10d8f0e6c72101e02", + "Hash": "54842a2443c76267152eface28d9e90a", "Requirements": [ "magrittr", "rlang" @@ -585,26 +594,26 @@ }, "renv": { "Package": "renv", - "Version": "0.15.5", + "Version": "0.16.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "6a38294e7d12f5d8e656b08c5bd8ae34", + "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", "Requirements": [] }, "rlang": { "Package": "rlang", - "Version": "1.0.5", + "Version": "1.0.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "971c3d698fc06dabdac6bc4bcda72dc4", + "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", "Requirements": [] }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.16", + "Version": "2.17", "Source": "Repository", "Repository": "CRAN", - "Hash": "0f3eaa1547e2c6880d4de1c043ac6826", + "Hash": "e97c8be593e010f93520e8215c0f9189", "Requirements": [ "bslib", "evaluate", @@ -649,6 +658,17 @@ "viridisLite" ] }, + "shroomDK": { + "Package": "shroomDK", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f9c14419a9be59218b96cccad0e4db77", + "Requirements": [ + "httr", + "jsonlite" + ] + }, "stringi": { "Package": "stringi", "Version": "1.7.8", @@ -671,10 +691,10 @@ }, "sys": { "Package": "sys", - "Version": "3.4", + "Version": "3.4.1", "Source": "Repository", "Repository": "CRAN", - "Hash": "b227d13e29222b4574486cfcbde077fa", + "Hash": "34c16f1ef796057bfa06d3f4ff818a5d", "Requirements": [] }, "tibble": { @@ -715,24 +735,25 @@ }, "tidyselect": { "Package": "tidyselect", - "Version": "1.1.2", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "17f6da8cfd7002760a859915ce7eef8f", + "Hash": "79540e5fcd9e0435af547d885f184fd5", "Requirements": [ - "ellipsis", + "cli", "glue", - "purrr", + "lifecycle", "rlang", - "vctrs" + "vctrs", + "withr" ] }, "tinytex": { "Package": "tinytex", - "Version": "0.41", + "Version": "0.42", "Source": "Repository", "Repository": "CRAN", - "Hash": "6edfe5df6431a724b4254c0591e34ab3", + "Hash": "7629c6c1540835d5248e6e7df265fa74", "Requirements": [ "xfun" ] @@ -747,10 +768,10 @@ }, "vctrs": { "Package": "vctrs", - "Version": "0.4.1", + "Version": "0.4.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "8b54f22e2a58c4f275479c92ce041a57", + "Hash": "0e3dfc070b2a8f0478fcdf86fb33355d", "Requirements": [ "cli", "glue", @@ -775,18 +796,18 @@ }, "xfun": { "Package": "xfun", - "Version": "0.33", + "Version": "0.34", "Source": "Repository", "Repository": "CRAN", - "Hash": "1a666f915cd65072f4ccf5b2888d5d39", + "Hash": "9eba2411b0b1f879797141bd24df7407", "Requirements": [] }, "yaml": { "Package": "yaml", - "Version": "2.3.5", + "Version": "2.3.6", "Source": "Repository", "Repository": "CRAN", - "Hash": "458bb38374d73bf83b1bb85e353da200", + "Hash": "9b570515751dcbae610f29885e025b41", "Requirements": [] } } diff --git a/renv/.gitignore b/renv/.gitignore index 275e4ca..22a0d01 100644 --- a/renv/.gitignore +++ b/renv/.gitignore @@ -1,3 +1,4 @@ +sandbox/ library/ local/ cellar/ diff --git a/renv/activate.R b/renv/activate.R index 72c0818..019b5a6 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,7 +2,7 @@ local({ # the requested version of renv - version <- "0.15.5" + version <- "0.16.0" # the project directory project <- getwd() @@ -185,43 +185,80 @@ local({ if (fixup) mode <- "w+b" - utils::download.file( + args <- list( url = url, destfile = destfile, mode = mode, quiet = TRUE ) + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + } renv_bootstrap_download_cran_latest <- function(version) { spec <- renv_bootstrap_download_cran_latest_find(version) - - message("* Downloading renv ", version, " ... ", appendLF = FALSE) - type <- spec$type repos <- spec$repos - info <- tryCatch( - utils::download.packages( - pkgs = "renv", - destdir = tempdir(), - repos = repos, - type = type, - quiet = TRUE - ), + message("* Downloading renv ", version, " ... ", appendLF = FALSE) + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), condition = identity ) - if (inherits(info, "condition")) { + if (inherits(status, "condition")) { message("FAILED") return(FALSE) } # report success and return message("OK (downloaded ", type, ")") - info[1, 2] + destfile } @@ -678,7 +715,7 @@ local({ return(profile) # check for a profile file (nothing to do if it doesn't exist) - path <- renv_bootstrap_paths_renv("profile", profile = FALSE) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) if (!file.exists(path)) return(NULL) @@ -805,9 +842,23 @@ local({ renv_json_read <- function(file = NULL, text = NULL) { + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) + renv_json_read_jsonlite(file, text) + else + renv_json_read_default(file, text) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { text <- paste(text %||% read(file), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { # find strings in the JSON + text <- paste(text %||% read(file), collapse = "\n") pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' locs <- gregexpr(pattern, text, perl = TRUE)[[1]] @@ -838,8 +889,9 @@ local({ # transform the JSON into something the R parser understands transformed <- replaced - transformed <- gsub("[[{]", "list(", transformed) - transformed <- gsub("[]}]", ")", transformed) + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) transformed <- gsub(":", "=", transformed, fixed = TRUE) text <- paste(transformed, collapse = "\n")