From 1a9c34c0d1958e19388673442980a8dcb2763ca7 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Mon, 18 May 2026 10:30:54 -0400 Subject: [PATCH 01/10] update Model::parse and add pharos version check onAttach method --- DESCRIPTION | 1 + R/utils.R | 106 +++++++++++++++++++++++++++--- src/rust/Cargo.lock | 16 ++--- src/rust/Cargo.toml | 13 ++-- src/rust/nonmem/src/model/copy.rs | 2 +- src/rust/nonmem/src/model/mod.rs | 12 +--- src/rust/nonmem/src/utils.rs | 7 +- 7 files changed, 123 insertions(+), 34 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index bc57b02a..a913de3d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -18,6 +18,7 @@ License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) Config/rextendr/version: 0.5.0 +Config/PharosVersion: 0.5.0 Config/build/never-clean: true Config/build/extra-sources: src/rust/Cargo.lock SystemRequirements: Cargo (Rust's package manager), rustc >= 1.65.0, xz diff --git a/R/utils.R b/R/utils.R index 6d0a7d18..8b612b3a 100644 --- a/R/utils.R +++ b/R/utils.R @@ -393,6 +393,38 @@ print_data_table_knit <- function(formatted_data, title) { return(output) } +#' Detect the installed pharos CLI and its version +#' +#' Locates the `pharos` executable on the user's PATH via [Sys.which()] and +#' parses the version reported by `pharos --version`. +#' +#' @return A list with elements: +#' \itemize{ +#' \item `path` — absolute path to the pharos binary, or `NA_character_` if not found +#' \item `version` — installed version string (e.g. `"0.4.2"`), or `NA_character_` if not found or unparseable +#' } +#' @keywords internal +#' @noRd +detect_pharos <- function() { + path <- unname(Sys.which("pharos")) + if (!nzchar(path)) { + return(list(path = NA_character_, version = NA_character_)) + } + + out <- tryCatch( + suppressWarnings(system2(path, "--version", stdout = TRUE, stderr = TRUE)), + error = function(e) NULL + ) + if (is.null(out) || !length(out)) { + return(list(path = path, version = NA_character_)) + } + + match <- regmatches(out[1], regexpr("[0-9]+\\.[0-9]+\\.[0-9]+", out[1])) + version <- if (length(match)) match else NA_character_ + + list(path = path, version = version) +} + #' Generates a tidyverse-esque onAttach message for hyperion options #' #' @return a message to display on attach @@ -456,6 +488,13 @@ hyperion_options_message <- function() { # Check pharos config file status pharos_config_status <- find_pharos_config_file() + # Detect installed pharos CLI and compare against expected version + pharos_cli <- detect_pharos() + expected_pharos <- utils::packageDescription( + "hyperion", + fields = "Config/PharosVersion" + ) + # Format .onAttach message msg <- "\n\n" @@ -468,24 +507,55 @@ hyperion_options_message <- function() { "\n" ) - # Show the hyperion.config_dir override status first since it controls - # where pharos.toml gets resolved from. - config_dir_value <- getOption("hyperion.config_dir") - if (!is.null(config_dir_value) && nzchar(config_dir_value)) { + # Pharos CLI: absent, mismatched, or matched + if (is.na(pharos_cli$path)) { msg <- paste0( msg, - cli::col_green(cli::symbol$tick), + cli::col_red(cli::symbol$cross), " ", - "hyperion.config_dir : ", - config_dir_value, + cli::col_red("pharos CLI not found on PATH"), + "\n" + ) + } else if (is.na(pharos_cli$version)) { + msg <- paste0( + msg, + cli::col_red(cli::symbol$cross), + " ", + cli::col_red(paste0( + "pharos CLI found at ", + pharos_cli$path, + " but version could not be determined" + )), + "\n" + ) + } else if ( + !is.na(expected_pharos) && !identical(pharos_cli$version, expected_pharos) + ) { + msg <- paste0( + msg, + cli::col_red(cli::symbol$cross), + " ", + cli::col_red(paste0( + "pharos CLI version mismatch: installed ", + pharos_cli$version, + ", expected ", + expected_pharos, + " (", + pharos_cli$path, + ")" + )), "\n" ) } else { msg <- paste0( msg, - cli::symbol$info, + cli::col_green(cli::symbol$tick), " ", - cli::style_dim("hyperion.config_dir : (unset)"), + "pharos CLI: ", + pharos_cli$version, + " (", + pharos_cli$path, + ")", "\n" ) } @@ -509,6 +579,24 @@ hyperion_options_message <- function() { ) } + # hyperion.config_dir is shown as a sub-detail of pharos.toml resolution + # since it controls where pharos.toml is looked up from. + config_dir_value <- getOption("hyperion.config_dir") + if (!is.null(config_dir_value) && nzchar(config_dir_value)) { + msg <- paste0( + msg, + " \u2514 hyperion.config_dir : ", + config_dir_value, + "\n" + ) + } else { + msg <- paste0( + msg, + cli::style_dim(" \u2514 hyperion.config_dir : (unset)"), + "\n" + ) + } + # Add general options section if (length(set_general_options)) { msg <- paste0( diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 4dc102e9..c8bed4c7 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.0#8a55a9a2babd81105617b8a1e178b48847a03d9f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.0#8a55a9a2babd81105617b8a1e178b48847a03d9f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.0#8a55a9a2babd81105617b8a1e178b48847a03d9f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.0#8a55a9a2babd81105617b8a1e178b48847a03d9f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" dependencies = [ "anyhow", "config", @@ -1335,7 +1335,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.2", + "winnow 1.0.3", ] [[package]] @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.0#8a55a9a2babd81105617b8a1e178b48847a03d9f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" dependencies = [ "anyhow", "fs-err", @@ -1599,9 +1599,9 @@ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" [[package]] name = "wit-bindgen" diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml index 334bd8f9..a0ec9df9 100644 --- a/src/rust/Cargo.toml +++ b/src/rust/Cargo.toml @@ -38,10 +38,15 @@ serde = { workspace = true } extendr-api = { version = "0.9.0", features = ["serde"] } # Pharos components -nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", tag = "v0.5.0" } -nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", tag = "v0.5.0" } -config = { git = "https://github.com/a2-ai/pharos", package = "config", tag = "v0.5.0" } -scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", tag = "v0.5.0" } +# nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", tag = "v0.5.0" } +# nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", tag = "v0.5.0" } +# config = { git = "https://github.com/a2-ai/pharos", package = "config", tag = "v0.5.0" } +# scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", tag = "v0.5.0" } +nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", branch = "fixes" } +nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", branch = "fixes" } +config = { git = "https://github.com/a2-ai/pharos", package = "config", branch = "fixes" } +scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", branch = "fixes" } + # Core utilities anyhow = "1.0.100" diff --git a/src/rust/nonmem/src/model/copy.rs b/src/rust/nonmem/src/model/copy.rs index c8ac290e..2b75fc1b 100644 --- a/src/rust/nonmem/src/model/copy.rs +++ b/src/rust/nonmem/src/model/copy.rs @@ -175,7 +175,7 @@ pub fn copy_model_wrap( .ok_or_extendr_err("Could not determine parent directory")? .join(&model_stem); let content = fs::read_to_string(&from_path).map_to_extendr_err("")?; - let model = Model::parse(&content) + let model = Model::parse(&from_path, &content) .map_err(|_| extendr_err!("Failed to parse model: {}", from_path.display()))?; resolve_ext_path(&model, &run_dir, &model_stem) } diff --git a/src/rust/nonmem/src/model/mod.rs b/src/rust/nonmem/src/model/mod.rs index 0c2fadf8..2c3ea784 100644 --- a/src/rust/nonmem/src/model/mod.rs +++ b/src/rust/nonmem/src/model/mod.rs @@ -123,17 +123,11 @@ pub fn read_model(path: &str) -> Result { let mod_path = validate_model_path(path)?; let content = fs::read_to_string(&mod_path).map_to_extendr_err("")?; - let mut model = match Model::parse(&content) { + let mut model = match Model::parse(path, &content) { Ok(model) => model, - Err(diags) => { - let msg = diags - .iter() - .map(|d| d.render(mod_path.as_path(), &content)) - .collect::>() - .join("\n"); - return Err(extendr_err!("Failed to read model file:\n{msg}")); - } + Err(e) => return Err(extendr_err!("Failed to read model file:\n{e}")), }; + let mut robj_model = model_to_robj(&mut model, &mod_path)?; add_run_status_attr(&mut robj_model, &mod_path)?; diff --git a/src/rust/nonmem/src/utils.rs b/src/rust/nonmem/src/utils.rs index 56b180d1..5e5157e1 100644 --- a/src/rust/nonmem/src/utils.rs +++ b/src/rust/nonmem/src/utils.rs @@ -193,7 +193,8 @@ fn assemble_top_level(model: Model, source: PathBuf) -> Result { fn parse_model_from_disk(path: &Path) -> Result { let content = fs::read_to_string(path).map_to_extendr_err("Failed to read model file")?; - Model::parse(&content).map_err(|_| extendr_err!("Failed to parse model: {}", path.display())) + Model::parse(path, &content) + .map_err(|_| extendr_err!("Failed to parse model: {}", path.display())) } /// Resolve the final `.ext` file path for a model, honoring `$EST FILE=`. @@ -348,8 +349,8 @@ pub fn try_parse_model(path: &str) -> Option { let model_path = find_output_file(search_path, "mod") .or_else(|_| find_output_file(path, "ctl")) .ok()?; - let content = fs::read_to_string(model_path).ok()?; - Model::parse(&content).ok() + let content = fs::read_to_string(&model_path).ok()?; + Model::parse(model_path, &content).ok() } /// Gets the comment type from pharos.toml configuration From f8256c9832a094239a5dd685d1628eef0fbfb41a Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Mon, 18 May 2026 13:50:19 -0400 Subject: [PATCH 02/10] bump back version before 0.5.0 release --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a913de3d..4e611d81 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: hyperion Title: Pharmaceutical Model Development and Workflow Tools -Version: 0.5.0 +Version: 0.4.2.9000 Authors@R: c( person("Matt", "Smith", , "matthews@a2-ai.com", role = c("aut", "cre")), person("Vincent", "Prouillet", ,"vincent@a2-ai.com", role = c("aut")), From 93c0a3bda0b31cf85ebb5f44e9473cee6af0953e Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 19 May 2026 09:50:37 -0400 Subject: [PATCH 03/10] update pharos --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index c8bed4c7..9c7e956b 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#61fef5c864873c5f08e33b168f5a96abe824929b" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" dependencies = [ "anyhow", "fs-err", From f895460efdd9a8e0d783dde8ccc893f5f38f5d65 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 19 May 2026 10:57:04 -0400 Subject: [PATCH 04/10] update pharosf --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 9c7e956b..97a216ea 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#382f2f1b7a7652ff5b139c7a21b512be09f6481f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" dependencies = [ "anyhow", "fs-err", From 6ffd44fdd592dea3d1ebc4c1870881e043c2b01a Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 19 May 2026 13:37:27 -0400 Subject: [PATCH 05/10] update pharos --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 97a216ea..97c4af59 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#69d9b9de29a10ed39ae789a637a0ff5da3d5b44a" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" dependencies = [ "anyhow", "fs-err", From a037cf3c567616a5153cdde896029225672ce4c6 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 19 May 2026 13:44:16 -0400 Subject: [PATCH 06/10] pharos update --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 97c4af59..2b882132 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#cff70a5b49b831a75edd6668779e1d6a4330ab1f" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" dependencies = [ "anyhow", "fs-err", From 98c0696e368a51133bd65ae5d17fd33b48b6ad72 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Tue, 19 May 2026 15:06:49 -0400 Subject: [PATCH 07/10] update pharos --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 2b882132..669b8be4 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#9df65cfd80077fa5ec3400e04498cf6e29e657a6" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" dependencies = [ "anyhow", "fs-err", From caafefadca4b0054869c6ef1680acc942f5d403c Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Wed, 20 May 2026 12:17:01 -0400 Subject: [PATCH 08/10] update pharos --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 669b8be4..a65651b2 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#5d93033a9424b765843a7123ff53bc80c01e2385" +source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" dependencies = [ "anyhow", "fs-err", From 3dc885de538a6380b840655d5d7566105d58fee6 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 21 May 2026 09:34:15 -0400 Subject: [PATCH 09/10] update pharos to v0.5.1 --- src/rust/Cargo.lock | 14 +++++++------- src/rust/Cargo.toml | 13 ++++--------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index a65651b2..adbf8aee 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" dependencies = [ "anyhow", "fs-err", @@ -255,9 +255,9 @@ checksum = "2906d3628a885aa49a23b88e71f63e51ae8df41cd76652287f0a6179a11833a9" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "encode_unicode" @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?branch=fixes#c6f1c5e3377d24e7b93e2d3869f6c533a5c6fb2b" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" dependencies = [ "anyhow", "fs-err", diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml index a0ec9df9..3a1ada22 100644 --- a/src/rust/Cargo.toml +++ b/src/rust/Cargo.toml @@ -38,15 +38,10 @@ serde = { workspace = true } extendr-api = { version = "0.9.0", features = ["serde"] } # Pharos components -# nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", tag = "v0.5.0" } -# nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", tag = "v0.5.0" } -# config = { git = "https://github.com/a2-ai/pharos", package = "config", tag = "v0.5.0" } -# scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", tag = "v0.5.0" } -nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", branch = "fixes" } -nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", branch = "fixes" } -config = { git = "https://github.com/a2-ai/pharos", package = "config", branch = "fixes" } -scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", branch = "fixes" } - +nonmem = { git = "https://github.com/a2-ai/pharos", package = "nonmem", tag = "v0.5.1" } +nmparser = { git = "https://github.com/a2-ai/pharos", package = "nonmem-parser", tag = "v0.5.1" } +config = { git = "https://github.com/a2-ai/pharos", package = "config", tag = "v0.5.1" } +scheduler = { git = "https://github.com/a2-ai/pharos", package = "scheduler", tag = "v0.5.1" } # Core utilities anyhow = "1.0.100" From 322c180023c8a35cf940fec186295f0e3442b0f5 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Thu, 21 May 2026 09:40:54 -0400 Subject: [PATCH 10/10] update pharos to v0.5.1 --- src/rust/Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index adbf8aee..a6dc2e21 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -141,7 +141,7 @@ dependencies = [ [[package]] name = "config" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#1ee4eba4513a1d9d61241ed4a1f85ccd9ed8992a" dependencies = [ "anyhow", "fs-err", @@ -741,7 +741,7 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "nonmem" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#1ee4eba4513a1d9d61241ed4a1f85ccd9ed8992a" dependencies = [ "anyhow", "blake3", @@ -766,7 +766,7 @@ dependencies = [ [[package]] name = "nonmem-parser" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#1ee4eba4513a1d9d61241ed4a1f85ccd9ed8992a" dependencies = [ "anyhow", "distrs", @@ -1125,7 +1125,7 @@ dependencies = [ [[package]] name = "scheduler" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#1ee4eba4513a1d9d61241ed4a1f85ccd9ed8992a" dependencies = [ "anyhow", "config", @@ -1377,7 +1377,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "utils" version = "0.1.0" -source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#af9f0119827628a5450847571506a5ab10bad65c" +source = "git+https://github.com/a2-ai/pharos?tag=v0.5.1#1ee4eba4513a1d9d61241ed4a1f85ccd9ed8992a" dependencies = [ "anyhow", "fs-err",