From c3f98c1c7bce1ffc0aad0d56e8c5696e6fda076a Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Tue, 25 Aug 2020 07:04:55 +0000 Subject: [PATCH 01/10] fixes #149 --- CRAN-RELEASE | 4 ++-- NEWS | 3 +++ R/node.R | 2 +- data/acme.rda | Bin 31344 -> 31428 bytes 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CRAN-RELEASE b/CRAN-RELEASE index 7bab839..0005bcb 100644 --- a/CRAN-RELEASE +++ b/CRAN-RELEASE @@ -1,2 +1,2 @@ -This package was submitted to CRAN on 2019-11-09. -Once it is accepted, delete this file and tag the release (commit f38e9e6221). +This package was submitted to CRAN on 2020-07-31. +Once it is accepted, delete this file and tag the release (commit ded55fd). diff --git a/NEWS b/NEWS index 0793e05..937eb95 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ # All changes to data.tree are documented here. +## Version 1.X.X +- FIX: changed lock_object to lock_objects (#149 thx to Olly Beagly) + ## Version 1.0.0 - IMPROVE: Replaced dependency on stringr by dependency on stringi, which make data.tree even more light-weight - CHANGE: Node serialization changed. In many cases, you might still be able to load previously saved data.tree objects, but then they do not correspond to the latest version. diff --git a/R/node.R b/R/node.R index dd5a527..992976a 100644 --- a/R/node.R +++ b/R/node.R @@ -120,7 +120,7 @@ NODE_RESERVED_NAMES_CONST <- c( #' @export #' @format An \code{\link{R6Class}} generator object Node <- R6Class("Node", - lock_object = FALSE, + lock_objects = FALSE, lock_class = TRUE, portable = TRUE, class = TRUE, diff --git a/data/acme.rda b/data/acme.rda index d928a4875712aeb20d369423cd280cd3efc5cb21..ef5339279381eea713bc83ee2d0a7d726fd13a69 100644 GIT binary patch delta 29937 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 AtpET3 delta 29853 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 From ceed2a5544ff1420534849bacebbf18d0ea999ff Mon Sep 17 00:00:00 2001 From: Shota Ochi Date: Thu, 10 Dec 2020 13:56:44 +0900 Subject: [PATCH 02/10] fix typo in vignette entry --- vignettes/applications.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/applications.Rmd b/vignettes/applications.Rmd index 2443a29..0549675 100644 --- a/vignettes/applications.Rmd +++ b/vignettes/applications.Rmd @@ -14,7 +14,7 @@ output: From 8359b42933296fb5b56b1c0bdc2b0f1e4bc8f775 Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Sun, 10 Jan 2021 09:39:00 -0500 Subject: [PATCH 03/10] NA is no longer supported for Node names --- NEWS | 4 ++++ R/node.R | 5 +++++ tests/testthat/test-treeMethods.R | 17 ++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 0793e05..4dc9f17 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,9 @@ # All changes to data.tree are documented here. +## Version >1.0.0 + +- IMPROVE: Node names may no longer be `NA`. It was not fully supported, and now it is an error. (#152) + ## Version 1.0.0 - IMPROVE: Replaced dependency on stringr by dependency on stringi, which make data.tree even more light-weight - CHANGE: Node serialization changed. In many cases, you might still be able to load previously saved data.tree objects, but then they do not correspond to the latest version. diff --git a/R/node.R b/R/node.R index 992976a..cf3a459 100644 --- a/R/node.R +++ b/R/node.R @@ -138,6 +138,11 @@ Node <- R6Class("Node", initialize=function(name, check = c("check", "no-warn", "no-check"), ...) { if (!missing(name)) { name <- as.character(name) + if (length(name) != 1) { + stop("Node name must be a scalar") + } else if (is.na(name)) { + stop("Node name must be a non-NA character scalar") + } name <- CheckNameReservedWord(name, check) private$p_name <- name } diff --git a/tests/testthat/test-treeMethods.R b/tests/testthat/test-treeMethods.R index b0dc39e..b7cb4a7 100644 --- a/tests/testthat/test-treeMethods.R +++ b/tests/testthat/test-treeMethods.R @@ -2,6 +2,12 @@ context("tree methods") test_that("Node instantiation", { + expect_equal( + Node$new()$name, + "", + info="Confirm default name is an empty string" + ) + n <- Node$new("bla") expect_equal(n$name, "bla") @@ -36,7 +42,16 @@ test_that("Node instantiation", { expect_that(n <- Node$new("name", check = "whatever"), gives_warning()) expect_equal(n$name, "name2") - + expect_error( + Node$new(NA_character_), + regexp="Node name must be a non-NA character" + ) + + expect_error( + Node$new(c("A", "B")), + regexp="Node name must be a scalar" + ) + }) test_that("Climb NULL", { From ef09c4e203f635fa0441a77a199e540b2b23281f Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sat, 11 Nov 2023 18:59:36 +0100 Subject: [PATCH 04/10] closes #169 --- .Rbuildignore | 3 +- CRAN-RELEASE | 2 - DESCRIPTION | 8 +- NEWS | 4 +- R/{data.tree.R => data.tree-package.R} | 15 +++- R/node_conversion_list.R | 15 ++-- getting-started-with-development.md | 15 ++++ man/Node.Rd | 96 +++++++++++------------ man/as.Node.list.Rd | 2 + man/data.tree.Rd | 20 ++++- cheat-sheet.md => publish-cheat-sheet.md | 4 +- tests/testthat/test-treeConversionList.R | 32 ++++++++ tests/testthat/test-treeConversionRpart.R | 2 +- 13 files changed, 151 insertions(+), 67 deletions(-) delete mode 100644 CRAN-RELEASE rename R/{data.tree.R => data.tree-package.R} (90%) create mode 100644 getting-started-with-development.md rename cheat-sheet.md => publish-cheat-sheet.md (91%) diff --git a/.Rbuildignore b/.Rbuildignore index bcd3893..1f33bf4 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -3,7 +3,8 @@ ^\.travis\.yml$ data_gen cran-comments.md -cheat-sheet.md +publish-cheat-sheet.md +getting-started-with-development.md appveyor.yml travis-tool.sh.cmd Rprof.out diff --git a/CRAN-RELEASE b/CRAN-RELEASE deleted file mode 100644 index 0005bcb..0000000 --- a/CRAN-RELEASE +++ /dev/null @@ -1,2 +0,0 @@ -This package was submitted to CRAN on 2020-07-31. -Once it is accepted, delete this file and tag the release (commit ded55fd). diff --git a/DESCRIPTION b/DESCRIPTION index bd6ae7a..92f4964 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: data.tree Type: Package Title: General Purpose Hierarchical Data Structure -Version: 1.0.0 -Date: 2020-07-31 +Version: 1.0.1 +Date: 2023-11-11 Authors@R: c( person( "Russ", "Hyde", @@ -48,7 +48,7 @@ Authors@R: c( "Christoph", "Glur" , role = c("aut", "cre") , comment = "R interface" - , email = "christoph.glur@ipub.com" + , email = "christoph.glur@powerpartners.pro" ) ) VignetteBuilder: @@ -88,5 +88,5 @@ URL: http://github.com/gluc/data.tree BugReports: http://github.com/gluc/data.tree/issues Depends: R (>= 3.5) -RoxygenNote: 7.1.1 +RoxygenNote: 7.2.3 Encoding: UTF-8 diff --git a/NEWS b/NEWS index 396d745..8384ec8 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,10 @@ # All changes to data.tree are documented here. -## Version 1.X.X +## Version 1.1.0 - IMPROVE: Node names may no longer be `NA`. It was not fully supported, and now it is an error. (#152) - FIX: changed lock_object to lock_objects (#149 thx to Olly Beagly) +- FIX: help('data.tree') works again +- IMPROVE: FromListSimple and as.Node.list now have an additional parameter 'interpretNullAsList'. See #169 for details. ## Version 1.0.0 - IMPROVE: Replaced dependency on stringr by dependency on stringi, which make data.tree even more light-weight diff --git a/R/data.tree.R b/R/data.tree-package.R similarity index 90% rename from R/data.tree.R rename to R/data.tree-package.R index 0775b59..6b110bc 100644 --- a/R/data.tree.R +++ b/R/data.tree-package.R @@ -32,7 +32,17 @@ #' For more specialized conversions, see \code{\link{as.dendrogram.Node}}, \code{\link{as.Node.dendrogram}}, #' \code{\link{as.phylo.Node}} and \code{\link{as.Node.phylo}} #' -#' Finally, easy conversion options from and to JSON, YAML, igraph, and more exist. +#' Finally, easy conversion options from and to list, dataframe, JSON, YAML, igraph, ape, rpart, party and more exist: +#' +#' \itemize{ +#' \item{list: both directions} +#' \item{dataframe: both directions} +#' \item{JSON, YAML: both directions, via lists} +#' \item{igraph: from igraph to data.tree} +#' \item{ape: both directions} +#' \item{rpart: from rpart to data.tree} +#' \item{party: from party to data.tree} +#' } #' #' @section Node and Reference Semantics: #' @@ -93,6 +103,7 @@ #' #' @seealso \code{\link{Node}} #' @seealso For more details, see the \code{data.tree} vignette by running: \code{vignette("data.tree")} -#' @docType package #' @name data.tree +#' @keywords internal +"_PACKAGE" NULL \ No newline at end of file diff --git a/R/node_conversion_list.R b/R/node_conversion_list.R index fab58c4..00c7f66 100644 --- a/R/node_conversion_list.R +++ b/R/node_conversion_list.R @@ -8,6 +8,8 @@ #' @param childrenName The name of the element that contains the child list (applies to mode 'explicit' only). #' @param nodeName A name suggestion for x, if the name cannot be deferred otherwise. This is for example the case for #' the root with mode explicit and named lists. +#' @param interpretNullAsList If \code{TRUE}, then \code{NULL}-valued lists are interpreted as child nodes. Else, they are interpreted as attributes. +#' This has only an effect if \code{mode} is "simple". #' @param ... Any other argument to be passed to generic sub implementations #' #' @examples @@ -57,7 +59,7 @@ #' @family as.Node #' #' @export -as.Node.list <- function(x, mode = c("simple", "explicit"), nameName = "name", childrenName = "children", nodeName = NULL, check = c("check", "no-warn", "no-check"), ...) { +as.Node.list <- function(x, mode = c("simple", "explicit"), nameName = "name", childrenName = "children", nodeName = NULL, interpretNullAsList = FALSE, check = c("check", "no-warn", "no-check"), ...) { mode <- mode[1] check <- check[1] @@ -120,7 +122,10 @@ as.Node.list <- function(x, mode = c("simple", "explicit"), nameName = "name", c #children if (is.character(x)) return (n) - if (mode == 'simple') children <- x[vapply(x, is.list, logical(1))] + if (mode == 'simple') { + if (interpretNullAsList) children <- x[vapply(x, function(y) is.list(y) || is.null(y), logical(1))] + else children <- x[vapply(x, is.list, logical(1))] + } else if (mode == 'explicit') children <- x[[childrenName]] if (length(children) == 0) return (n) @@ -138,7 +143,7 @@ as.Node.list <- function(x, mode = c("simple", "explicit"), nameName = "name", c if (nchar(childName) == 0) childName <- i child <- children[[i]] - childNode <- as.Node.list(child, mode, nameName, childrenName, nodeName = childName, check = check, ...) + childNode <- as.Node.list(child, mode, nameName, childrenName, nodeName = childName, interpretNullAsList = interpretNullAsList, check = check, ...) n$AddChildNode(childNode) } @@ -164,8 +169,8 @@ FromListExplicit <- function(explicitList, nameName = "name", childrenName = "ch #' interpreted as a child \code{Node} #' #' @export -FromListSimple <- function(simpleList, nameName = "name", nodeName = NULL, check = c("check", "no-warn", "no-check")) { - as.Node.list(simpleList, mode = "simple", nameName = nameName, nodeName = nodeName, check = check) +FromListSimple <- function(simpleList, nameName = "name", nodeName = NULL, interpretNullAsList = FALSE, check = c("check", "no-warn", "no-check")) { + as.Node.list(simpleList, mode = "simple", nameName = nameName, nodeName = nodeName, interpretNullAsList = interpretNullAsList, check = check) } diff --git a/getting-started-with-development.md b/getting-started-with-development.md new file mode 100644 index 0000000..50f69c3 --- /dev/null +++ b/getting-started-with-development.md @@ -0,0 +1,15 @@ +# Dev Guide + +To develop on a new environment, you need to: + +1. pull from CRAN (dev branch) +2. install R +3. install RStudio +4. install RTools (https://cran.rstudio.com/bin/windows/Rtools/) +4. install tinytex + 1. install.packages('tinytex') + 2. tinytex::install_tinytex() + 3. tinytex:::install_yihui_pkgs() +5. re-start RStudio +6. install devtools by running `install.packages("devtools")` + \ No newline at end of file diff --git a/man/Node.Rd b/man/Node.Rd index 8c7b437..34149ba 100644 --- a/man/Node.Rd +++ b/man/Node.Rd @@ -260,27 +260,27 @@ For more details see the \code{\link{data.tree}} documentations, or the \code{da \section{Methods}{ \subsection{Public methods}{ \itemize{ -\item \href{#method-new}{\code{Node$new()}} -\item \href{#method-AddChild}{\code{Node$AddChild()}} -\item \href{#method-AddChildNode}{\code{Node$AddChildNode()}} -\item \href{#method-AddSibling}{\code{Node$AddSibling()}} -\item \href{#method-AddSiblingNode}{\code{Node$AddSiblingNode()}} -\item \href{#method-RemoveChild}{\code{Node$RemoveChild()}} -\item \href{#method-RemoveAttribute}{\code{Node$RemoveAttribute()}} -\item \href{#method-Sort}{\code{Node$Sort()}} -\item \href{#method-Revert}{\code{Node$Revert()}} -\item \href{#method-Prune}{\code{Node$Prune()}} -\item \href{#method-Climb}{\code{Node$Climb()}} -\item \href{#method-Navigate}{\code{Node$Navigate()}} -\item \href{#method-Get}{\code{Node$Get()}} -\item \href{#method-Do}{\code{Node$Do()}} -\item \href{#method-Set}{\code{Node$Set()}} -\item \href{#method-clone}{\code{Node$clone()}} +\item \href{#method-Node-new}{\code{Node$new()}} +\item \href{#method-Node-AddChild}{\code{Node$AddChild()}} +\item \href{#method-Node-AddChildNode}{\code{Node$AddChildNode()}} +\item \href{#method-Node-AddSibling}{\code{Node$AddSibling()}} +\item \href{#method-Node-AddSiblingNode}{\code{Node$AddSiblingNode()}} +\item \href{#method-Node-RemoveChild}{\code{Node$RemoveChild()}} +\item \href{#method-Node-RemoveAttribute}{\code{Node$RemoveAttribute()}} +\item \href{#method-Node-Sort}{\code{Node$Sort()}} +\item \href{#method-Node-Revert}{\code{Node$Revert()}} +\item \href{#method-Node-Prune}{\code{Node$Prune()}} +\item \href{#method-Node-Climb}{\code{Node$Climb()}} +\item \href{#method-Node-Navigate}{\code{Node$Navigate()}} +\item \href{#method-Node-Get}{\code{Node$Get()}} +\item \href{#method-Node-Do}{\code{Node$Do()}} +\item \href{#method-Node-Set}{\code{Node$Set()}} +\item \href{#method-Node-clone}{\code{Node$clone()}} } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-new}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-new}{}}} \subsection{Method \code{new()}}{ Create a new \code{Node} object. This is often used to create the root of a tree when creating a tree programmatically. \subsection{Usage}{ @@ -318,8 +318,8 @@ node$y } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-AddChild}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-AddChild}{}}} \subsection{Method \code{AddChild()}}{ Creates a \code{Node} and adds it as the last sibling as a child to the \code{Node} on which this is called. \subsection{Usage}{ @@ -360,8 +360,8 @@ print(root, "myname") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-AddChildNode}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-AddChildNode}{}}} \subsection{Method \code{AddChildNode()}}{ Adds a \code{Node} as a child to this node. \subsection{Usage}{ @@ -391,8 +391,8 @@ root$AddChildNode(child) } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-AddSibling}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-AddSibling}{}}} \subsection{Method \code{AddSibling()}}{ Creates a new \code{Node} called \code{name} and adds it after this \code{Node} as a sibling. \subsection{Usage}{ @@ -431,8 +431,8 @@ sibling <- child$AddSibling("sibling1") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-AddSiblingNode}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-AddSiblingNode}{}}} \subsection{Method \code{AddSiblingNode()}}{ Adds a \code{Node} after this \code{Node}, as a sibling. \subsection{Usage}{ @@ -463,8 +463,8 @@ root$AddChildNode(child)$AddSiblingNode(sibling) } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-RemoveChild}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-RemoveChild}{}}} \subsection{Method \code{RemoveChild()}}{ Remove the child \code{Node} called \code{name} from a \code{Node} and returns it. \subsection{Usage}{ @@ -493,8 +493,8 @@ node$RemoveChild("mychild") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-RemoveAttribute}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-RemoveAttribute}{}}} \subsection{Method \code{RemoveAttribute()}}{ Removes attribute called \code{name} from this \code{Node}. \subsection{Usage}{ @@ -525,8 +525,8 @@ node } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Sort}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Sort}{}}} \subsection{Method \code{Sort()}}{ Sort children of a \code{Node} or an entire \code{data.tree} structure \subsection{Usage}{ @@ -576,8 +576,8 @@ print(acme, "totalCost") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Revert}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Revert}{}}} \subsection{Method \code{Revert()}}{ Reverts the sort order of a \code{Node}'s children. @@ -598,8 +598,8 @@ returns the Node invisibly (for chaining) } } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Prune}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Prune}{}}} \subsection{Method \code{Prune()}}{ Prunes a tree. @@ -635,8 +635,8 @@ print(acme, "cost") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Climb}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Climb}{}}} \subsection{Method \code{Climb()}}{ Climb a tree from parent to children, by provided criteria. \subsection{Usage}{ @@ -692,8 +692,8 @@ tree$Climb(c("1", "1"), position = c(2, 2))$path } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Navigate}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Navigate}{}}} \subsection{Method \code{Navigate()}}{ Navigate to another node by relative path. \subsection{Usage}{ @@ -732,8 +732,8 @@ Navigate(acme$Research, c("..", "IT", "Outsource")) } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Get}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Get}{}}} \subsection{Method \code{Get()}}{ Traverse a Tree and Collect Values \subsection{Usage}{ @@ -824,8 +824,8 @@ acme$Get(function(x) c(position = x$position, level = x$level), simplify = "regu } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Do}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Do}{}}} \subsection{Method \code{Do()}}{ Executes a function on a set of nodes \subsection{Usage}{ @@ -882,8 +882,8 @@ print(acme, "expectedCost") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Set}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-Set}{}}} \subsection{Method \code{Set()}}{ Traverse a Tree and Assign Values \subsection{Usage}{ @@ -949,8 +949,8 @@ print(acme, "departmentId", "head") } \if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-clone}{}}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-Node-clone}{}}} \subsection{Method \code{clone()}}{ The objects of this class are cloneable with this method. \subsection{Usage}{ diff --git a/man/as.Node.list.Rd b/man/as.Node.list.Rd index d6d9573..06b698b 100644 --- a/man/as.Node.list.Rd +++ b/man/as.Node.list.Rd @@ -12,6 +12,7 @@ nameName = "name", childrenName = "children", nodeName = NULL, + interpretNullAsList = FALSE, check = c("check", "no-warn", "no-check"), ... ) @@ -28,6 +29,7 @@ FromListSimple( simpleList, nameName = "name", nodeName = NULL, + interpretNullAsList = FALSE, check = c("check", "no-warn", "no-check") ) } diff --git a/man/data.tree.Rd b/man/data.tree.Rd index f3bca0c..f209513 100644 --- a/man/data.tree.Rd +++ b/man/data.tree.Rd @@ -1,8 +1,9 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/data.tree.R +% Please edit documentation in R/data.tree-package.R \docType{package} \name{data.tree} \alias{data.tree} +\alias{data.tree-package} \title{data.tree: Hierarchical Data Structures} \description{ \code{data.tree} is to hierarchical data what \code{data.frame} is to tabular data: An extensible, general purpose structure to store, manipulate, @@ -113,3 +114,20 @@ ToDataFrameNetwork(acme, "p", "cost") For more details, see the \code{data.tree} vignette by running: \code{vignette("data.tree")} } +\author{ +\strong{Maintainer}: Christoph Glur \email{christoph.glur@powerpartners.pro} (R interface) + +Other contributors: +\itemize{ + \item Russ Hyde (improve dependencies) [contributor] + \item Chris Hammill (improve getting) [contributor] + \item Facundo Munoz (improve list conversion) [contributor] + \item Markus Wamser (fixed some typos) [contributor] + \item Pierre Formont (additional features) [contributor] + \item Kent Russel (documentation) [contributor] + \item Noam Ross (fixes) [contributor] + \item Duncan Garmonsway (fixes) [contributor] +} + +} +\keyword{internal} diff --git a/cheat-sheet.md b/publish-cheat-sheet.md similarity index 91% rename from cheat-sheet.md rename to publish-cheat-sheet.md index 901cc79..de35033 100644 --- a/cheat-sheet.md +++ b/publish-cheat-sheet.md @@ -1,10 +1,10 @@ Before a release, do the following: 1. Set date in DESCRIPTION 2. Make sure NEWS is up to date -3. make sure tests pass +3. make sure tests pass (by running devtools::test()) 4. review documentation, especially Node 5. review vignettes (especially if png need updating). Run devtools::spell_check() -6. Check build +6. Check build by running devtools::check() 7. Commit to git, make sure travis and appveyor pass (in case it fails, you may want to clean cache) 8. make sure we have adequate coverage 9. Make sure devel passes, by running devtools::check_win_devel diff --git a/tests/testthat/test-treeConversionList.R b/tests/testthat/test-treeConversionList.R index 405906b..08e3253 100644 --- a/tests/testthat/test-treeConversionList.R +++ b/tests/testthat/test-treeConversionList.R @@ -240,6 +240,38 @@ children: }) +test_that("as.Node.list string NULL", { + + + + + yaml <- " +name: OS Students 2014/15 +OS X: + Yosemite: + Leopard: +Linux: + Debian: + version: 9 + Ubuntu: +Windows: + W7: + W8: + W10: +" + + lol <- yaml::yaml.load(yaml) + + tree <- FromListSimple(lol, interpretNullAsList = TRUE) + expect_equal(tree$totalCount, 11) + expect_equal(tree$height, 3) + expect_equal(tree$Linux$Debian$name, "Debian") + expect_equal(tree$Linux$Debian$version, 9) + + +}) + + test_that("as.Node.list empty list()", { lol = list(a = list(aa=1), b="hello", c = list()) tree = FromListSimple(lol) diff --git a/tests/testthat/test-treeConversionRpart.R b/tests/testthat/test-treeConversionRpart.R index 4e9fb43..e76ed74 100644 --- a/tests/testthat/test-treeConversionRpart.R +++ b/tests/testthat/test-treeConversionRpart.R @@ -3,7 +3,7 @@ context("tree conversion rpart") test_that("Conversion from rpart", { skip_if_not_installed("rpart") - fit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis) + fit <- rpart::rpart(Kyphosis ~ Age + Number + Start, data = rpart::kyphosis) tree <- as.Node(fit) expect_equal(tree$totalCount, NROW(fit$frame)) From f33da5323e3f1ee8e02c88e569e34b8bf46c6fac Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sat, 11 Nov 2023 22:55:21 +0100 Subject: [PATCH 05/10] printFormatters --- NEWS | 1 + R/node.R | 25 ++++++++++++++++++++++++- R/node_actives.R | 10 ++++------ R/node_methods.R | 5 +++-- man/NODE_RESERVED_NAMES_CONST.Rd | 2 +- man/as.Node.list.Rd | 3 +++ man/data.tree.Rd | 12 +++++++++++- man/print.Node.Rd | 5 ++++- 8 files changed, 51 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index 8384ec8..629a383 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ - FIX: changed lock_object to lock_objects (#149 thx to Olly Beagly) - FIX: help('data.tree') works again - IMPROVE: FromListSimple and as.Node.list now have an additional parameter 'interpretNullAsList'. See #169 for details. +- IMPROVE: added parameter `row.names = FALSE`in `print.Node()` to hide row numbers when printing a data.tree. ## Version 1.0.0 - IMPROVE: Replaced dependency on stringr by dependency on stringi, which make data.tree even more light-weight diff --git a/R/node.R b/R/node.R index cf3a459..b07d581 100644 --- a/R/node.R +++ b/R/node.R @@ -38,6 +38,7 @@ NODE_RESERVED_NAMES_CONST <- c( 'path', 'pathString', 'position', + 'printFormatters', 'Prune', 'Revert', 'RemoveAttribute', @@ -150,6 +151,7 @@ Node <- R6Class("Node", args <- list(...) mapply(FUN = function(arg, nme) self[[nme]] <- arg, args, names(args)) } + invisible (self) }, @@ -555,7 +557,8 @@ Node <- R6Class("Node", # End Traversal ####################### - + + ), @@ -568,6 +571,26 @@ Node <- R6Class("Node", else private$p_name <- changeName(self, private$p_name, value) }, + + printFormatters = function(value) { + if (missing(value)) { + # if private$p_print_formatters is not set, return default + if (is.null(private$p_print_formatters)) { + pf <- list(h = "--" , + v = "\u00A6", + l = "\u00B0", + j = "\u00A6" + ) + } else { + pf <- private$p_print_formatters + } + + return (pf) + } + private$p_print_formatters <- value + }, + + #' @field parent Gets or sets the parent \code{Node} of a \code{Node}. Only set this if you know what you are doing, as you might mess up the tree structure! parent = function(value) { if (missing(value)) return (private$p_parent) diff --git a/R/node_actives.R b/R/node_actives.R index f87ee98..a1e49e7 100644 --- a/R/node_actives.R +++ b/R/node_actives.R @@ -37,7 +37,6 @@ isNotLeaf <- function(node) { } - changeName <- function(node, oldName, newName) { if(!isRoot(node)) { rm(list = oldName, envir = node$parent) @@ -47,12 +46,11 @@ changeName <- function(node, oldName, newName) { return (newName) } - #' @export .separator <- function(self) { if (isRoot(self)) return("") - if (self$position == self$parent$count) mySeparator <- paste0(" ", "\u00B0", "--") - else mySeparator <- paste0(" ", "\u00A6", "--") + if (self$position == self$parent$count) mySeparator <- paste0(" ", self$root$printFormatters$l, self$root$printFormatters$h) + else mySeparator <- paste0(" ", self$root$printFormatters$v, self$root$printFormatters$h) return (paste0(.parentSeparator(self$parent), mySeparator)) } @@ -60,9 +58,9 @@ changeName <- function(node, oldName, newName) { .parentSeparator <- function(self) { if (isRoot(self)) return("") if (self$position == self$parent$count) mySeparator <- " " - else mySeparator <- paste0(" ", "\u00A6", " ") + else mySeparator <- paste0(" ", self$root$printFormatters$v, " ") paste0(.parentSeparator(self$parent), mySeparator) - + } #' Calculate the average number of branches each non-leaf has diff --git a/R/node_methods.R b/R/node_methods.R index 59d941a..ff81a48 100644 --- a/R/node_methods.R +++ b/R/node_methods.R @@ -16,6 +16,7 @@ #' everywhere in the tree, according to their level. If pruneFun is provided, then pruneMethod is ignored. #' @param limit The maximum number of nodes to print. Can be \code{NULL} if the #' entire tree should be printed. +#' @param row.names If \code{TRUE} (default), then the row names are printed out. Else, they are not. #' #' @inheritParams ToDataFrameTree #' @@ -38,7 +39,7 @@ #' #' #' @export -print.Node <- function(x, ..., pruneMethod = c("simple", "dist", NULL), limit = 100, pruneFun = NULL) { +print.Node <- function(x, ..., pruneMethod = c("simple", "dist", NULL), limit = 100, pruneFun = NULL, row.names = T) { if (length(pruneFun) > 0) pruneMethod <- NULL pruneMethod <- pruneMethod[1] if (length(pruneMethod) > 0 && length(limit) > 0) { @@ -56,7 +57,7 @@ print.Node <- function(x, ..., pruneMethod = c("simple", "dist", NULL), limit = } df <- ToDataFrameTree(x, format = TRUE, ..., pruneFun = pruneFun) - print(df, na.print = "") + print(df, na.print = "", row.names = row.names) } diff --git a/man/NODE_RESERVED_NAMES_CONST.Rd b/man/NODE_RESERVED_NAMES_CONST.Rd index 5aafe03..e184c5e 100644 --- a/man/NODE_RESERVED_NAMES_CONST.Rd +++ b/man/NODE_RESERVED_NAMES_CONST.Rd @@ -5,7 +5,7 @@ \alias{NODE_RESERVED_NAMES_CONST} \title{Names that are reserved by the Node class.} \format{ -An object of class \code{character} of length 42. +An object of class \code{character} of length 43. } \usage{ NODE_RESERVED_NAMES_CONST diff --git a/man/as.Node.list.Rd b/man/as.Node.list.Rd index 06b698b..a482789 100644 --- a/man/as.Node.list.Rd +++ b/man/as.Node.list.Rd @@ -47,6 +47,9 @@ the children lists are named, or if an automatic name (running number) should be \item{nodeName}{A name suggestion for x, if the name cannot be deferred otherwise. This is for example the case for the root with mode explicit and named lists.} +\item{interpretNullAsList}{If \code{TRUE}, then \code{NULL}-valued lists are interpreted as child nodes. Else, they are interpreted as attributes. +This has only an effect if \code{mode} is "simple".} + \item{check}{Either \itemize{ \item{\code{"check"}: if the name conformance should be checked and warnings should be printed in case of non-conformance (the default)} diff --git a/man/data.tree.Rd b/man/data.tree.Rd index f209513..9fe678f 100644 --- a/man/data.tree.Rd +++ b/man/data.tree.Rd @@ -44,7 +44,17 @@ Similar options exist for list of lists. For more specialized conversions, see \code{\link{as.dendrogram.Node}}, \code{\link{as.Node.dendrogram}}, \code{\link{as.phylo.Node}} and \code{\link{as.Node.phylo}} -Finally, easy conversion options from and to JSON, YAML, igraph, and more exist. +Finally, easy conversion options from and to list, dataframe, JSON, YAML, igraph, ape, rpart, party and more exist: + +\itemize{ + \item{list: both directions} + \item{dataframe: both directions} + \item{JSON, YAML: both directions, via lists} + \item{igraph: from igraph to data.tree} + \item{ape: both directions} + \item{rpart: from rpart to data.tree} + \item{party: from party to data.tree} +} } \section{Node and Reference Semantics}{ diff --git a/man/print.Node.Rd b/man/print.Node.Rd index 1af61a1..15b5d98 100644 --- a/man/print.Node.Rd +++ b/man/print.Node.Rd @@ -9,7 +9,8 @@ ..., pruneMethod = c("simple", "dist", NULL), limit = 100, - pruneFun = NULL + pruneFun = NULL, + row.names = T ) } \arguments{ @@ -28,6 +29,8 @@ entire tree should be printed.} \item{pruneFun}{allows providing a prune criteria, i.e. a function taking a \code{Node} as an input, and returning \code{TRUE} or \code{FALSE}. If the pruneFun returns FALSE for a Node, then the Node and its entire sub-tree will not be considered.} + +\item{row.names}{If \code{TRUE} (default), then the row names are printed out. Else, they are not.} } \description{ Print a \code{Node} in a human-readable fashion. From 07a4fb0b075845da078f0d679f004dc136b0bac6 Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sat, 11 Nov 2023 23:02:07 +0100 Subject: [PATCH 06/10] closes #167 --- R/node_actives.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/node_actives.R b/R/node_actives.R index a1e49e7..ad2b771 100644 --- a/R/node_actives.R +++ b/R/node_actives.R @@ -50,15 +50,15 @@ changeName <- function(node, oldName, newName) { .separator <- function(self) { if (isRoot(self)) return("") if (self$position == self$parent$count) mySeparator <- paste0(" ", self$root$printFormatters$l, self$root$printFormatters$h) - else mySeparator <- paste0(" ", self$root$printFormatters$v, self$root$printFormatters$h) + else mySeparator <- paste0(" ", self$root$printFormatters$j, self$root$printFormatters$h) return (paste0(.parentSeparator(self$parent), mySeparator)) } #' @export .parentSeparator <- function(self) { if (isRoot(self)) return("") - if (self$position == self$parent$count) mySeparator <- " " - else mySeparator <- paste0(" ", self$root$printFormatters$v, " ") + if (self$position == self$parent$count) mySeparator <- " " + else mySeparator <- paste0(" ", self$root$printFormatters$v, " ") paste0(.parentSeparator(self$parent), mySeparator) } From c00cbd6d931513f6df622801b21072405e7f453a Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sun, 12 Nov 2023 00:07:13 +0100 Subject: [PATCH 07/10] various small improvements --- R/node.R | 10 ++++++++-- R/node_actives.R | 11 ++++++----- data/acme.rda | Bin 31428 -> 35536 bytes data/mushroom.rda | Bin 264 -> 264 bytes data_gen/mushroom.R | 1 + man/Node.Rd | 6 ++++++ man/averageBranchingFactor.Rd | 2 +- vignettes/data.tree.Rmd | 26 ++++++++++++++++++++++++++ 8 files changed, 48 insertions(+), 8 deletions(-) diff --git a/R/node.R b/R/node.R index b07d581..ac22811 100644 --- a/R/node.R +++ b/R/node.R @@ -571,7 +571,12 @@ Node <- R6Class("Node", else private$p_name <- changeName(self, private$p_name, value) }, - + #' @field printFormatters gets or sets the formatters used to print a \code{Node}. + #' Set this as a list to a root node. + #' The different formatters are h (horizontal), v (vertical), l (L), j (junction), and s (separator). + #' For example, you can set the formatters to \code{list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C", s = " ")} + #' to get a similar behaviour as in \code{fs::dir_tree()}. + #' The defaults are: \code{list(h = "--" , v = "\u00A6", l = "\u00B0", j = "\u00A6", s = " ")} printFormatters = function(value) { if (missing(value)) { # if private$p_print_formatters is not set, return default @@ -579,7 +584,8 @@ Node <- R6Class("Node", pf <- list(h = "--" , v = "\u00A6", l = "\u00B0", - j = "\u00A6" + j = "\u00A6", + s = " " ) } else { pf <- private$p_print_formatters diff --git a/R/node_actives.R b/R/node_actives.R index ad2b771..d31de5d 100644 --- a/R/node_actives.R +++ b/R/node_actives.R @@ -49,23 +49,24 @@ changeName <- function(node, oldName, newName) { #' @export .separator <- function(self) { if (isRoot(self)) return("") - if (self$position == self$parent$count) mySeparator <- paste0(" ", self$root$printFormatters$l, self$root$printFormatters$h) - else mySeparator <- paste0(" ", self$root$printFormatters$j, self$root$printFormatters$h) + if (self$position == self$parent$count) mySeparator <- paste0(self$root$printFormatters$s, self$root$printFormatters$l, self$root$printFormatters$h) + else mySeparator <- paste0(self$root$printFormatters$s, self$root$printFormatters$j, self$root$printFormatters$h) return (paste0(.parentSeparator(self$parent), mySeparator)) } #' @export .parentSeparator <- function(self) { if (isRoot(self)) return("") - if (self$position == self$parent$count) mySeparator <- " " - else mySeparator <- paste0(" ", self$root$printFormatters$v, " ") + + if (self$position == self$parent$count) mySeparator <- paste0(rep(self$root$printFormatters$s, 4), collapse = "") + else mySeparator <- paste0(self$root$printFormatters$s, self$root$printFormatters$v, self$root$printFormatters$s, self$root$printFormatters$s) paste0(.parentSeparator(self$parent), mySeparator) } #' Calculate the average number of branches each non-leaf has #' -#' @param node The node +#' @param node The node to calculate the average branching factor for #' @export averageBranchingFactor <- function(node) { t <- Traverse(node, filterFun = isNotLeaf) diff --git a/data/acme.rda b/data/acme.rda index ef5339279381eea713bc83ee2d0a7d726fd13a69..6c4053b65eaa8907503209398b8dc36c615e4062 100644 GIT binary patch literal 35536 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 delta 244 zcmV?8Zc@siGsPptr;cfsDc{?yZA&#+@5o=2$3L!+ z-|ZT{nkvMZgrHKP@S>+-@T@m*iFJf1Nlo)TBKSgT`k;En&hq#flS*9Bj(f4vihoo1 zk>P7rI_79yEng(OcCztW(9sng<`T=}s|Tj%000001h0^aoi0pkIP1ONa@q5(lZFb#_W000000a;r8mvJuu diff --git a/data_gen/mushroom.R b/data_gen/mushroom.R index cc63a10..b3ad798 100644 --- a/data_gen/mushroom.R +++ b/data_gen/mushroom.R @@ -4,3 +4,4 @@ points <- c('yes', 'no', 'yes', 'no', 'no') edible <- c('toxic', 'edible', 'edible', 'edible', 'edible') mushroom <- data.frame(color = color, size = size, points = points, edibility = edible) save(mushroom, file = "data/mushroom.rda", compress = "xz") + diff --git a/man/Node.Rd b/man/Node.Rd index 34149ba..abf198c 100644 --- a/man/Node.Rd +++ b/man/Node.Rd @@ -211,6 +211,12 @@ For more details see the \code{\link{data.tree}} documentations, or the \code{da \describe{ \item{\code{name}}{Gets or sets the name of a \code{Node}. For example \code{Node$name <- "Acme"}.} +\item{\code{printFormatters}}{gets or sets the formatters used to print a \code{Node}. +Set this as a list to a root node. +The different formatters are h (horizontal), v (vertical), l (L), j (junction) s (separator) and r (space repetitions). +For example, you can set the formatters to \code{list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C", s = "\u0009", r = 1)} +to get the same behaviour as in \code{fs::dir_tree()}.} + \item{\code{parent}}{Gets or sets the parent \code{Node} of a \code{Node}. Only set this if you know what you are doing, as you might mess up the tree structure!} \item{\code{children}}{Gets or sets the children \code{list} of a \code{Node}. Only set this if you know what you are doing, as you might mess up the tree structure!} diff --git a/man/averageBranchingFactor.Rd b/man/averageBranchingFactor.Rd index f9dce7c..3857ff5 100644 --- a/man/averageBranchingFactor.Rd +++ b/man/averageBranchingFactor.Rd @@ -7,7 +7,7 @@ averageBranchingFactor(node) } \arguments{ -\item{node}{The node} +\item{node}{The node to calculate the average branching factor for} } \description{ Calculate the average number of branches each non-leaf has diff --git a/vignettes/data.tree.Rmd b/vignettes/data.tree.Rmd index 1efd3c9..5b3ea37 100644 --- a/vignettes/data.tree.Rmd +++ b/vignettes/data.tree.Rmd @@ -183,6 +183,32 @@ osNode <- as.Node(osList) print(osNode, "users") ``` +In cases where your leaf elements have no attributes, you might want to interpret them as nodes, and not as attributes. In such cases, you can use +`interpretNullAsList = TRUE` to convert these into `Nodes` (instead of attributes). + +For example: + +```{r} +library(yaml) +yaml <- " +name: OS Students 2014/15 +OS X: + Yosemite: + Leopard: +Linux: + Debian: + Ubuntu: +Windows: + W7: + W8: + W10: +" + +osList <- yaml.load(yaml) +osNode <- as.Node(osList, interpretNullAsList = TRUE) +osNode$printFormatters <- list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C") +print(osNode, "users") +``` ## Node methods From 0f7ecfcc8ad45165f978e48128dddd1ac4a0eda7 Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sun, 12 Nov 2023 00:15:48 +0100 Subject: [PATCH 08/10] closes #166 --- R/node.R | 6 ++---- man/Node.Rd | 7 ++++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/R/node.R b/R/node.R index ac22811..6df68d8 100644 --- a/R/node.R +++ b/R/node.R @@ -652,15 +652,13 @@ Node <- R6Class("Node", #' @field fields Will be deprecated, use \code{attributes} instead fields = function() { - print("Node$fields will be deprecated in the next release. Please use Node$attributes instead.") - # .Deprecated("Node$attributes", old = "Node$fields") + .Deprecated("Node$attributes", old = "Node$fields") return(self$attributes) }, #' @field fieldsAll Will be deprecated, use \code{attributesAll} instead fieldsAll = function() { - print("Node$fieldsAll will be deprecated in the next release. Please use Node$attributesAll instead.") - # .Deprecated("Node$attributesAll", old = "Node$fieldsAll") + .Deprecated("Node$attributesAll", old = "Node$fieldsAll") return(self$attributesAll) }, diff --git a/man/Node.Rd b/man/Node.Rd index abf198c..075363c 100644 --- a/man/Node.Rd +++ b/man/Node.Rd @@ -213,9 +213,10 @@ For more details see the \code{\link{data.tree}} documentations, or the \code{da \item{\code{printFormatters}}{gets or sets the formatters used to print a \code{Node}. Set this as a list to a root node. -The different formatters are h (horizontal), v (vertical), l (L), j (junction) s (separator) and r (space repetitions). -For example, you can set the formatters to \code{list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C", s = "\u0009", r = 1)} -to get the same behaviour as in \code{fs::dir_tree()}.} +The different formatters are h (horizontal), v (vertical), l (L), j (junction), and s (separator). +For example, you can set the formatters to \code{list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C", s = " ")} +to get a similar behaviour as in \code{fs::dir_tree()}. +The defaults are: \code{list(h = "--" , v = "\u00A6", l = "\u00B0", j = "\u00A6", s = " ")}} \item{\code{parent}}{Gets or sets the parent \code{Node} of a \code{Node}. Only set this if you know what you are doing, as you might mess up the tree structure!} From 7746de2ce94017c9200274fdfb51b81a352da536 Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sun, 12 Nov 2023 11:22:49 +0100 Subject: [PATCH 09/10] more checks --- DESCRIPTION | 6 +++--- R/node.R | 2 +- data/acme.rda | Bin 35536 -> 35600 bytes man/Node.Rd | 2 +- publish-cheat-sheet.md | 12 ++++++------ 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 92f4964..f47dbfb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: data.tree Type: Package Title: General Purpose Hierarchical Data Structure -Version: 1.0.1 +Version: 1.1.0 Date: 2023-11-11 Authors@R: c( person( @@ -84,8 +84,8 @@ Description: Create tree structures from hierarchical data, and traverse the data.frame and more. Useful for decision trees, machine learning, finance, conversion from and to JSON, and many other applications. License: GPL (>= 2) -URL: http://github.com/gluc/data.tree -BugReports: http://github.com/gluc/data.tree/issues +URL: https://github.com/gluc/data.tree +BugReports: https://github.com/gluc/data.tree/issues Depends: R (>= 3.5) RoxygenNote: 7.2.3 diff --git a/R/node.R b/R/node.R index 6df68d8..78ca639 100644 --- a/R/node.R +++ b/R/node.R @@ -575,7 +575,7 @@ Node <- R6Class("Node", #' Set this as a list to a root node. #' The different formatters are h (horizontal), v (vertical), l (L), j (junction), and s (separator). #' For example, you can set the formatters to \code{list(h = "\u2500" , v = "\u2502", l = "\u2514", j = "\u251C", s = " ")} - #' to get a similar behaviour as in \code{fs::dir_tree()}. + #' to get a similar behavior as in \code{fs::dir_tree()}. #' The defaults are: \code{list(h = "--" , v = "\u00A6", l = "\u00B0", j = "\u00A6", s = " ")} printFormatters = function(value) { if (missing(value)) { diff --git a/data/acme.rda b/data/acme.rda index 6c4053b65eaa8907503209398b8dc36c615e4062..961adb0c44425480cde3cf8d6eab42113a84e6ed 100644 GIT binary patch literal 35600 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 A+5i9m literal 35536 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 if any of these fail, go back to 6.! -12. check reverse dependencies by running revdepcheck::revdep_check(, num_workers = 2, timeout = as.difftime(60, units="mins")) (from github if not yet published to CRAN devtools::install_github("r-lib/revdepcheck") -13. update cran-comments.md -14. merge into master and push -15. create release on github in master, tag it as pre-release -16. submit it to cran by calling devtools::release() -17. once accepted by CRAN, remove the pre-release flag on github +13. check reverse dependencies by running revdepcheck::revdep_check(, num_workers = 2, timeout = as.difftime(60, units="mins")) (from github if not yet published to CRAN devtools::install_github("r-lib/revdepcheck") +14. update cran-comments.md +15. merge into master and push +16. create release on github in master, tag it as pre-release +17. submit it to cran by calling devtools::release() +18. once accepted by CRAN, remove the pre-release flag on github From 0f58f6ca65f2c9041bd692f5bd36ca97cb5b98c3 Mon Sep 17 00:00:00 2001 From: Christoph Glur Date: Sun, 12 Nov 2023 11:26:57 +0100 Subject: [PATCH 10/10] github actions --- .Rbuildignore | 1 + .github/.gitignore | 1 + .github/workflows/R-CMD-check.yaml | 49 ++++++++++++++++++++++++++++++ README.md | 5 ++- 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 .github/.gitignore create mode 100644 .github/workflows/R-CMD-check.yaml diff --git a/.Rbuildignore b/.Rbuildignore index 1f33bf4..f0cb43f 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -12,3 +12,4 @@ Rprof.out revdep README.md ^CRAN-RELEASE$ +^\.github$ diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..a3ac618 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,49 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +name: R-CMD-check + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v3 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true diff --git a/README.md b/README.md index 4f19824..8c0c760 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,10 @@ CRAN: [![CRAN Version](http://www.r-pkg.org/badges/version/data.tree)](https://c Master: [![Build Status master](https://travis-ci.org/gluc/data.tree.svg?branch=master)](https://travis-ci.org/gluc/data.tree) [![Windows Build status]( https://ci.appveyor.com/api/projects/status/github/gluc/data.tree?branch=master&svg=true)](https://ci.appveyor.com/project/gluc/data.tree) [![codecov.io](http://codecov.io/github/gluc/data.tree/coverage.svg?branch=master)](http://codecov.io/github/gluc/data.tree?branch=master) -Dev: [![Build Status dev](https://travis-ci.org/gluc/data.tree.svg?branch=dev)](https://travis-ci.org/gluc/data.tree) [![Windows Build status]( https://ci.appveyor.com/api/projects/status/github/gluc/data.tree?branch=dev&svg=true)](https://ci.appveyor.com/project/gluc/data.tree) [![codecov.io](http://codecov.io/github/gluc/data.tree/coverage.svg?branch=dev)](http://codecov.io/github/gluc/data.tree?branch=dev) + +[![R-CMD-check](https://github.com/gluc/data.tree/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/gluc/data.tree/actions/workflows/R-CMD-check.yaml) + + # data.tree An R package to manage hierarchical data and tree structures