-
Notifications
You must be signed in to change notification settings - Fork 34
Description
Hello,
Thanks so much for making this package available!
I have been using the chain_start and chain_end functions to link various assertions together. However, I noticed that this appears to add an "assertr_in_chain_success_fun_override" attribute to the dataframe, if it is redefined through the chaining process. This does not occur when chaining is omitted. See the minimum working example below.
library(assertr)
df <- data.frame(X1 = letters, X2 = seq(1,26))
## With chaining
df_with <- df |>
chain_start() |>
assert(is_uniq, X1, X2) |>
assert(is.character, X1) |>
assert(is.numeric, X2) |>
chain_end()
attributes(df_with)
#$names
#[1] "X1" "X2"
#$class
#[1] "data.frame"
#$row.names
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#$assertr_in_chain_success_fun_override
#function (data, ...)
#{
# return(data)
#}
#<bytecode: 0x0000023be0ad13c8>
#<environment: namespace:assertr>
## Without chaining
df_without <- df |>
assert(is_uniq, X1, X2) |>
assert(is.character, X1) |>
assert(is.numeric, X2)
attributes(df_without)
#$names
#[1] "X1" "X2"
#$class
#[1] "data.frame"
#$row.names
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Is this the anticipated behaviour? Perhaps I'm not using the package in the intended manner?
My intended use case is to compare if the "asserted" dataframe is identical to another where the additional attribute causes the comparison to fail. After a set of chained assertions, would it be possible to return a "clean" dataframe with the "assertr_in_chain_success_fun_override" attribute removed?