{
  "_id": "6a103af5acfb0bcc41c9b59f",
  "Package": "mfp2",
  "Type": "Package",
  "Title": "Multivariable Fractional Polynomial Models with Extensions",
  "Version": "1.0.2",
  "Date": "2025-10-01",
  "Authors@R": "c(\nperson(\"Edwin\", \"Kipruto\", role = c(\"aut\", \"cre\"), email = \"edwin.kipruto@uniklinik-freiburg.de\"),\nperson(\"Michael\", \"Kammer\", role = c(\"aut\"), email = \"michael.kammer@meduniwien.ac.at\"),\nperson(\"Patrick\", \"Royston\", role = c(\"aut\"), email = \"j.royston@ucl.ac.uk\"),\nperson(\"Willi\", \"Sauerbrei\", role = c(\"aut\"), email = \"wilhelm.sauerbrei@uniklinik-freiburg.de\")\n)",
  "Description": "Multivariable fractional polynomial algorithm\nsimultaneously selects variables and functional forms in both\ngeneralized linear models and Cox proportional hazard models.\nKey references are Royston and Altman (1994)\n<doi:10.2307/2986270> and Royston and Sauerbrei (2008,\nISBN:978-0-470-02842-1). In addition, the implementation can\nmodel semi-continuous covariates with a “spike at zero” using a\ntwo-stage selection procedure. This extension follows the\nframework proposed by Becher et al. (2012)\n<doi:10.1002/bimj.201100263>. The package also includes the\napproximate cumulative distribution (ACD) transformation to\nmodel a sigmoid relationship between variable x and an outcome\nvariable y, as described in Royston (2014)\n<doi:10.1177/1536867X1401400206> and Royston and Sauerbrei\n(2016) <doi: 10.1177/1536867X1601600>. This feature\ndistinguishes it from a standard fractional polynomial\nfunction, which lacks the ability to achieve such modeling.",
  "License": "GPL-3",
  "URL": "https://github.com/EdwinKipruto/mfp2",
  "BugReports": "https://github.com/EdwinKipruto/mfp2/issues",
  "Encoding": "UTF-8",
  "Author": "Edwin Kipruto [aut, cre], Michael Kammer [aut], Patrick Royston\n[aut], Willi Sauerbrei [aut]",
  "Maintainer": "Edwin Kipruto <edwin.kipruto@uniklinik-freiburg.de>",
  "RoxygenNote": "7.3.3",
  "Roxygen": "list(markdown = TRUE)",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Language": "en-US",
  "Repository": "https://edwinkipruto.r-universe.dev",
  "Date/Publication": "2026-05-11 13:31:01 UTC",
  "RemoteUrl": "https://github.com/edwinkipruto/mfp2",
  "RemoteRef": "HEAD",
  "RemoteSha": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-11 17:27:00 UTC",
    "User": "root"
  },
  "MD5sum": "ba0d967151ec3f48d1d190f5ddc01b6d",
  "_user": "edwinkipruto",
  "_type": "src",
  "_file": "mfp2_1.0.2.tar.gz",
  "_fileid": "c99e3b92fc7fc94479d72bd5e7ccb41778339572c24c3a6a29f376debc2935a8",
  "_filesize": 2031397,
  "_sha256": "c99e3b92fc7fc94479d72bd5e7ccb41778339572c24c3a6a29f376debc2935a8",
  "_created": "2026-05-11T17:27:00.000Z",
  "_published": "2026-05-22T11:16:05.192Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77368677052,
      "time": 157,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6925418752"
    },
    {
      "job": 77368677492,
      "time": 155,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6925418059"
    },
    {
      "job": 77368677458,
      "time": 196,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6925418942"
    },
    {
      "job": 77368677015,
      "time": 234,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6925429177"
    },
    {
      "job": 77368676536,
      "time": 200,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6925358571"
    },
    {
      "job": 77368676600,
      "time": 114,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7159178056"
    },
    {
      "job": 77368677136,
      "time": 138,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6925409953"
    },
    {
      "job": 77368677525,
      "time": 131,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6925407070"
    },
    {
      "job": 77368677198,
      "time": 105,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6925397535"
    }
  ],
  "_buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/edwinkipruto/mfp2",
  "_commit": {
    "id": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
    "author": "EdwinKipruto <kiprutohedwin@gmail.com>",
    "committer": "EdwinKipruto <kiprutohedwin@gmail.com>",
    "message": "improved efficiency ofgenerate_combinations_with_replacement\n",
    "time": 1778506261
  },
  "_maintainer": {
    "name": "Edwin Kipruto",
    "email": "edwin.kipruto@uniklinik-freiburg.de"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2.0",
      "role": "Depends"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.4.0",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "survival",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "xfun",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "formatR",
      "role": "Suggests"
    },
    {
      "package": "patchwork",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    }
  ],
  "_owner": "edwinkipruto",
  "_selfowned": true,
  "_usedby": 3,
  "_updates": [
    {
      "week": "2025-19",
      "n": 8
    },
    {
      "week": "2025-20",
      "n": 4
    },
    {
      "week": "2025-22",
      "n": 1
    },
    {
      "week": "2025-37",
      "n": 1
    },
    {
      "week": "2025-38",
      "n": 8
    },
    {
      "week": "2025-39",
      "n": 8
    },
    {
      "week": "2025-40",
      "n": 8
    },
    {
      "week": "2025-41",
      "n": 2
    },
    {
      "week": "2025-42",
      "n": 3
    },
    {
      "week": "2025-46",
      "n": 1
    },
    {
      "week": "2026-04",
      "n": 1
    },
    {
      "week": "2026-08",
      "n": 4
    },
    {
      "week": "2026-09",
      "n": 2
    },
    {
      "week": "2026-20",
      "n": 1
    }
  ],
  "_tags": [],
  "_stars": 3,
  "_contributors": [
    {
      "user": "edwinkipruto",
      "count": 295,
      "uuid": 53853668
    },
    {
      "user": "matherealize",
      "count": 282,
      "uuid": 44870348
    },
    {
      "user": "gregorsteiner",
      "count": 1,
      "uuid": 51028286
    }
  ],
  "_userbio": {
    "uuid": 53853668,
    "type": "user",
    "name": "EdwinKipruto"
  },
  "_downloads": {
    "count": 643,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/mfp2"
  },
  "_devurl": "https://github.com/edwinkipruto/mfp2",
  "_searchresults": 9,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/mfp2.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/edwinkipruto/mfp2",
  "_realowner": "edwinkipruto",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2023-11-14"
    },
    {
      "version": "1.0.1",
      "date": "2025-05-15"
    }
  ],
  "_exports": [
    "apply_shift_scale",
    "assign_df",
    "center_matrix",
    "contr.cumulative",
    "create_dummy_variables",
    "find_scale_factor",
    "find_shift_factor",
    "fit_acd",
    "fp",
    "fp2",
    "fracplot",
    "generate_powers_acd",
    "generate_powers_fp",
    "get_selected_variable_names",
    "mfp2",
    "transform_matrix",
    "transform_vector_acd",
    "transform_vector_fp"
  ],
  "_datasets": [
    {
      "name": "art",
      "title": "Artificial dataset with continuous response",
      "object": "art",
      "file": "art.rda",
      "class": [
        "data.frame"
      ],
      "fields": [
        "y",
        "x1",
        "x2",
        "x3",
        "x4",
        "x5",
        "x6",
        "x7",
        "x8",
        "x9",
        "x10"
      ],
      "rows": 250,
      "table": true,
      "tojson": true
    },
    {
      "name": "gbsg",
      "title": "Breast cancer dataset used in the Royston and Sauerbrei (2008) book.",
      "object": "gbsg",
      "file": "gbsg.rda",
      "class": [
        "data.frame"
      ],
      "fields": [
        "id",
        "age",
        "meno",
        "size",
        "grade",
        "nodes",
        "enodes",
        "pgr",
        "er",
        "hormon",
        "rectime",
        "censrec"
      ],
      "rows": 686,
      "table": true,
      "tojson": true
    },
    {
      "name": "pima",
      "title": "Pima Indians dataset used in the Royston and Sauerbrei (2008) book.",
      "object": "pima",
      "file": "pima.rda",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "pregnant",
        "glucose",
        "diastolic",
        "triceps",
        "insulin",
        "bmi",
        "diabetes",
        "age",
        "y"
      ],
      "rows": 768,
      "table": true,
      "tojson": true
    },
    {
      "name": "prostate",
      "title": "Prostate cancer dataset used in the Royston and Sauerbrei (2008) book.",
      "object": "prostate",
      "file": "prostate.rda",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "obsno",
        "age",
        "svi",
        "pgg45",
        "cavol",
        "weight",
        "bph",
        "cp",
        "lpsa"
      ],
      "rows": 97,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "apply_acd",
      "title": "Function to apply Approximate Cumulative Distribution (ACD)",
      "topics": [
        "apply_acd"
      ]
    },
    {
      "page": "apply_shift_scale",
      "title": "Shift and scale vector x",
      "topics": [
        "apply_shift_scale"
      ]
    },
    {
      "page": "art",
      "title": "Artificial dataset with continuous response",
      "topics": [
        "art"
      ]
    },
    {
      "page": "assign_df",
      "title": "Helper to assign degrees of freedom",
      "topics": [
        "assign_df"
      ]
    },
    {
      "page": "backscale_matrix",
      "title": "Backscale Columns of a Matrix (Internal)",
      "topics": [
        "backscale_matrix"
      ]
    },
    {
      "page": "calculate_f_test",
      "title": "Function to compute F-statistic and p-value from deviances",
      "topics": [
        "calculate_f_test"
      ]
    },
    {
      "page": "calculate_lr_test",
      "title": "Function to calculate p-values for likelihood-ratio test",
      "topics": [
        "calculate_lr_test"
      ]
    },
    {
      "page": "calculate_model_metrics",
      "title": "Function to compute model metrics to be used within 'mfp2'",
      "topics": [
        "calculate_model_metrics"
      ]
    },
    {
      "page": "calculate_number_fp_powers",
      "title": "Calculates the total number of fractional polynomial powers in adjustment variables.",
      "topics": [
        "calculate_number_fp_powers"
      ]
    },
    {
      "page": "calculate_standard_error",
      "title": "Helper function to compute standard error of a partial predictor",
      "topics": [
        "calculate_standard_error"
      ]
    },
    {
      "page": "center_matrix",
      "title": "Simple function to center data",
      "topics": [
        "center_matrix"
      ]
    },
    {
      "page": "coef.mfp2",
      "title": "Extract coefficients from object of class 'mfp2'",
      "topics": [
        "coef.mfp2"
      ]
    },
    {
      "page": "contr.cumulative",
      "title": "Cumulative (Threshold) Contrast Coding for Ordered Factors",
      "topics": [
        "contr.cumulative"
      ]
    },
    {
      "page": "convert_powers_list_to_matrix",
      "title": "Helper to convert a nested list with same or different length into a matrix",
      "topics": [
        "convert_powers_list_to_matrix"
      ]
    },
    {
      "page": "create_dummy_variables",
      "title": "Simple function to create dummy variables for ordinal and nominal variables",
      "topics": [
        "create_dummy_variables"
      ]
    },
    {
      "page": "create_fp_terms",
      "title": "Helper to create overview table of fp terms",
      "topics": [
        "create_fp_terms"
      ]
    },
    {
      "page": "deviance_gaussian",
      "title": "Deviance computations as used in mfp in stata",
      "topics": [
        "deviance_gaussian"
      ]
    },
    {
      "page": "ensure_length",
      "title": "Helper function to ensure vectors have a specified length",
      "topics": [
        "ensure_length"
      ]
    },
    {
      "page": "find_best_fp_cycle",
      "title": "Helper to run cycles of the mfp algorithm",
      "topics": [
        "find_best_fp_cycle"
      ]
    },
    {
      "page": "find_best_fp_step",
      "title": "Function to estimate the best FP functions for a single variable",
      "topics": [
        "find_best_fp_step"
      ]
    },
    {
      "page": "find_best_fp1_for_acd",
      "title": "Function to fit univariable FP1 models for acd transformation",
      "topics": [
        "find_best_fp1_for_acd"
      ]
    },
    {
      "page": "find_best_fpm_step",
      "title": "Function to find the best FP functions of given degree for a single variable",
      "topics": [
        "find_best_fpm_step"
      ]
    },
    {
      "page": "find_scale_factor",
      "title": "Function that calculates an integer used to scale predictor",
      "topics": [
        "find_scale_factor"
      ]
    },
    {
      "page": "find_shift_factor",
      "title": "Function that calculates a value used to shift predictor",
      "topics": [
        "find_shift_factor"
      ]
    },
    {
      "page": "fit_acd",
      "title": "Function to estimate approximate cumulative distribution (ACD)",
      "topics": [
        "fit_acd"
      ]
    },
    {
      "page": "fit_cox",
      "title": "Function that fits Cox proportional hazards models",
      "topics": [
        "fit_cox"
      ]
    },
    {
      "page": "fit_glm",
      "title": "Function that fits generalized linear models",
      "topics": [
        "fit_glm"
      ]
    },
    {
      "page": "fit_linear_step",
      "title": "Function to fit linear model for variable of interest",
      "topics": [
        "fit_linear_step"
      ]
    },
    {
      "page": "fit_model",
      "title": "Function that fits models supported by 'mfp2'",
      "topics": [
        "fit_model"
      ]
    },
    {
      "page": "fit_null_step",
      "title": "Function to fit a null model excluding variable of interest",
      "topics": [
        "fit_null_step"
      ]
    },
    {
      "page": "fp",
      "title": "Helper to assign attributes to a variable undergoing FP-transformation",
      "topics": [
        "fp",
        "fp2"
      ]
    },
    {
      "page": "fracplot",
      "title": "Plot response functions from a fitted 'mfp2' object",
      "topics": [
        "fracplot",
        "plot_mfp"
      ]
    },
    {
      "page": "gbsg",
      "title": "Breast cancer dataset used in the Royston and Sauerbrei (2008) book.",
      "topics": [
        "gbsg"
      ]
    },
    {
      "page": "generate_combinations_with_replacement",
      "title": "Helper function to generate combinations with replacement",
      "topics": [
        "generate_combinations_with_replacement"
      ]
    },
    {
      "page": "generate_powers_fp",
      "title": "Function that generates a matrix of FP powers for any degree",
      "topics": [
        "generate_powers_acd",
        "generate_powers_fp"
      ]
    },
    {
      "page": "generate_transformations_fp",
      "title": "Function to generate all requested FP transformations for a single variable",
      "topics": [
        "generate_transformations_acd",
        "generate_transformations_fp"
      ]
    },
    {
      "page": "get_selected_variable_names",
      "title": "Helper function to extract selected variables from fitted 'mfp2' object",
      "topics": [
        "get_selected_variable_names"
      ]
    },
    {
      "page": "mfp2",
      "title": "Multivariable Fractional Polynomial Models with Extensions",
      "topics": [
        "mfp2",
        "mfp2.default",
        "mfp2.formula"
      ]
    },
    {
      "page": "name_transformed_variables",
      "title": "Helper function to name transformed variables",
      "topics": [
        "name_transformed_variables"
      ]
    },
    {
      "page": "order_variables",
      "title": "Helper to order variables for mfp2 algorithm",
      "topics": [
        "order_variables",
        "order_variables_by_significance"
      ]
    },
    {
      "page": "pima",
      "title": "Pima Indians dataset used in the Royston and Sauerbrei (2008) book.",
      "topics": [
        "pima"
      ]
    },
    {
      "page": "predict.mfp2",
      "title": "Predict Method for 'mfp2'",
      "topics": [
        "predict.mfp2"
      ]
    },
    {
      "page": "prepare_newdata_for_predict",
      "title": "Helper function to prepare newdata for predict function",
      "topics": [
        "prepare_newdata_for_predict"
      ]
    },
    {
      "page": "print_mfp_step",
      "title": "Verbose printing of the function selection procedure (FSP)",
      "topics": [
        "print_mfp_ic_step",
        "print_mfp_pvalue_step",
        "print_mfp_step"
      ]
    },
    {
      "page": "print.mfp2",
      "title": "Print method for objects of class 'mfp2'",
      "topics": [
        "print.mfp2"
      ]
    },
    {
      "page": "prostate",
      "title": "Prostate cancer dataset used in the Royston and Sauerbrei (2008) book.",
      "topics": [
        "prostate"
      ]
    },
    {
      "page": "reset_acd",
      "title": "Helper to reset acd transformation for variables with few values",
      "topics": [
        "reset_acd"
      ]
    },
    {
      "page": "select_ic",
      "title": "Function selection procedure based on information criteria",
      "topics": [
        "select_ic",
        "select_ic_acd"
      ]
    },
    {
      "page": "select_linear",
      "title": "Helper function to select between null and linear term for a single variable",
      "topics": [
        "select_linear"
      ]
    },
    {
      "page": "select_ra2",
      "title": "Function selection procedure based on closed testing procedure",
      "topics": [
        "select_ra2"
      ]
    },
    {
      "page": "select_ra2_acd",
      "title": "Function selection procedure for ACD based on closed testing procedure",
      "topics": [
        "select_ra2_acd"
      ]
    },
    {
      "page": "summary.mfp2",
      "title": "Summarizing 'mfp2' model fits",
      "topics": [
        "summary.mfp2"
      ]
    },
    {
      "page": "transform_matrix",
      "title": "Transform each column of matrix using final FP powers or ACD transformation",
      "topics": [
        "transform_matrix"
      ]
    },
    {
      "page": "transform_vector_fp",
      "title": "Functions to transform a variable using fractional polynomial powers or acd",
      "topics": [
        "transform_vector_acd",
        "transform_vector_fp"
      ]
    },
    {
      "page": "transform_vector_power",
      "title": "Simple function to transform vector by a single power",
      "topics": [
        "transform_vector_power"
      ]
    }
  ],
  "_readme": "https://github.com/edwinkipruto/mfp2/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "farver",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lattice",
    "lifecycle",
    "Matrix",
    "R6",
    "RColorBrewer",
    "rlang",
    "S7",
    "scales",
    "survival",
    "vctrs",
    "viridisLite",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "mfp2.Rmd",
      "filename": "mfp2.html",
      "title": "Multivariable Fractional Polynomials with Extensions",
      "author": "Edwin Kipruto, Michael Kammer, Patrick Royston, Willi Sauerbrei",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Introduction to Multivariable Fractional Polynomials (MFP)",
        "Overview of MFP",
        "Fractional polynomial models for a continuous variable",
        "Function selection procedure (FSP)",
        "MFP procedure",
        "MFP -- Key issues and approaches to handling them",
        "The variable has to be positive",
        "Sample size and influential observations",
        "Lack of fit",
        "Local features",
        "Introduction to the mfp2 package",
        "Estimation algorithm",
        "Installation",
        "Linear regression",
        "Fitting MFP models using the matrix and formula interfaces",
        "Shifting and scaling of covariates",
        "Setting degrees of freedom for each variable",
        "Tuning parameters for MFP",
        "Nominal significance levels",
        "Information criteria",
        "Model comparison tests",
        "Subject matter knowledge may require changes in fractional polynomial powers",
        "Explanation of output from model-selection algorithm",
        "Methods defined for mfp2",
        "Graphical presentation of FP functions",
        "Handling categorical variables",
        "Logistic regression",
        "Survival data",
        "Stratified Cox model",
        "MFP with ACD transformation",
        "Modeling a sigmoid relationship",
        "Spike-at-Zero Modeling with Positive-Only FP Transformation",
        "Two-Stage Model Selection Procedure",
        "Example: Simulation of Spike-at-Zero Data",
        "Simulation of Spike-at-Zero (SAZ) Data",
        "Fractional Polynomial Analysis with SAZ",
        "References"
      ],
      "created": "2023-06-16 13:19:02",
      "modified": "2025-10-10 10:52:33",
      "commits": 86
    },
    {
      "source": "mfp_spike.Rmd",
      "filename": "mfp_spike.html",
      "title": "Multivariable Fractional Polynomials with Spike at Zero",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Two-Stage Model Selection Procedure",
        "Example: Simulation of Spike-at-Zero Data",
        "Simulation of Spike-at-Zero (SAZ) Data",
        "Fractional Polynomial Analysis with SAZ",
        "References"
      ],
      "created": "2026-02-18 08:24:18",
      "modified": "2026-02-18 08:24:18",
      "commits": 1
    }
  ],
  "_score": 6.878521795501206,
  "_indexed": true,
  "_nocasepkg": "mfp2",
  "_universes": [
    "edwinkipruto"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.2",
      "date": "2026-05-11T17:29:18.000Z",
      "distro": "noble",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "efcf0a60a4c4c6e6c318993b8db27821cf6e48213d4d2b60c96e02baa4f80f83",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.2",
      "date": "2026-05-11T17:29:18.000Z",
      "distro": "noble",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "8d068e0ffe2a756d3f645d943d6cf74bcadabd1f9c2bf20a9300253e064cf7d3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.2",
      "date": "2026-05-11T17:29:34.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "a3f2b91723cdcb7cfe21c47d3c182aeecb12d85666fb5da3b9c4c098f6c8ee28",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.0.2",
      "date": "2026-05-11T17:29:49.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "9f3f032c1391f45df7e814e7d8397c97c43caa3c43e5dc21da1f1af5e2c9a9e1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-11T17:28:45.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "6e1654c963202cebd5e5d8a29c954ce883aee5f966a2423c91f5aade7373b1f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-11T17:28:28.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "c2da301fcf8e1eb6d56d8a6bedf28ab9b51974698dfd9bb2faa1162c2b30723c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.0.2",
      "date": "2026-05-11T17:28:14.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "563ed7bbe3335448657710ce1e97e2254de9e6b412d9be9fb068706a9c679817",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.2",
      "date": "2026-05-22T11:15:45.000Z",
      "commit": "1bf3e78b3cd5e434325e80c507b564f07ff15478",
      "fileid": "edf813478e08572a3a6ed9ea958742545301ecea82670de8207aee494ce44fd9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/edwinkipruto/actions/runs/25685945059"
    }
  ]
}