Skip to content

Commit b1e8e25

Browse files
author
Junlue Zhao
committed
combined similar functions to reduce code lines
1 parent 357d2fd commit b1e8e25

File tree

2 files changed

+27
-48
lines changed

2 files changed

+27
-48
lines changed

R/DatasetConnector.R

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ DatasetConnector <- R6::R6Class( #nolint
261261
#' @return (`self`) invisibly for chaining.
262262
mutate = function(code, vars = list()) {
263263
private$set_staged_mutate_vars(vars)
264-
private$set_staged_mutate_code(code)
264+
private$set_mutate_code(code, stage = TRUE)
265265
if (self$is_pulled()) {
266266
private$mutate_eager(is_re_pull = FALSE)
267267
} else {
@@ -464,18 +464,16 @@ DatasetConnector <- R6::R6Class( #nolint
464464
},
465465

466466
mutate_eager = function(is_re_pull = FALSE) {
467-
code_obj <- ifelse(is_re_pull, "get_mutate_code_class", "get_staged_mutate_code_class")
468-
vars_list <- ifelse(is_re_pull, "mutate_vars", "staged_mutate_vars")
469-
if (!is_empty(private[[code_obj]]()$code)) {
470-
mutate_code <- private[[code_obj]]()$get_code(deparse = TRUE)
471-
if (inherits(private[[code_obj]](), "PythonCodeClass")) {
472-
mutate_code <- private[[code_obj]]()
467+
if (!is_empty(private$get_mutate_code_class(staged = ! is_re_pull)$code)) {
468+
mutate_code <- private$get_mutate_code_class(staged = ! is_re_pull)$get_code(deparse = TRUE)
469+
if (inherits(private$get_mutate_code_class(staged = ! is_re_pull), "PythonCodeClass")) {
470+
mutate_code <- private$get_mutate_code_class(staged = ! is_re_pull)
473471
}
474472

475473
private$dataset <- mutate_dataset(
476474
x = private$dataset,
477475
code = mutate_code,
478-
vars = private[[vars_list]]
476+
vars = private[[ifelse(is_re_pull, "mutate_vars", "staged_mutate_vars")]]
479477
)
480478

481479
private$is_mutate_delayed_flag <- private$dataset$is_mutate_delayed()
@@ -588,63 +586,37 @@ DatasetConnector <- R6::R6Class( #nolint
588586
return(NULL)
589587
},
590588

591-
get_mutate_code_class = function() {
592-
res <- CodeClass$new()
593-
if (inherits(private$mutate_code, "PythonCodeClass")) {
594-
res <- PythonCodeClass$new()
595-
}
589+
get_mutate_code_class = function(staged = FALSE) {
590+
code_obj <- ifelse(staged, "staged_mutate_code", "mutate_code")
591+
vars_list <- ifelse(staged, "staged_mutate_vars", "mutate_vars")
596592

597-
res$append(list_to_code_class(private$mutate_vars))
598-
res$append(private$mutate_code)
599-
return(res)
600-
},
601-
get_staged_mutate_code_class = function() {
602593
res <- CodeClass$new()
603-
if (inherits(private$staged_mutate_code, "PythonCodeClass")) {
594+
if (inherits(private[[code_obj]], "PythonCodeClass")) {
604595
res <- PythonCodeClass$new()
605596
}
606597

607-
res$append(list_to_code_class(private$staged_mutate_vars))
608-
res$append(private$staged_mutate_code)
598+
res$append(list_to_code_class(private[[vars_list]]))
599+
res$append(private[[code_obj]])
609600
return(res)
610601
},
611-
set_staged_mutate_code = function(code) {
612-
stopifnot(is_character_vector(code, 0, 1) || inherits(code, "PythonCodeClass"))
613-
614-
if (inherits(code, "PythonCodeClass")) {
615-
r <- PythonCodeClass$new()
616-
r$append(private$staged_mutate_code)
617-
private$staged_mutate_code <- r
618-
619-
code <- code$get_code()
620-
}
621-
622-
if (length(code) > 0 && code != "") {
623-
private$staged_mutate_code$set_code(
624-
code = code,
625-
dataname = private$dataname,
626-
deps = names(private$staged_mutate_vars)
627-
)
628-
}
629-
630-
return(invisible(self))
631-
},
632-
set_mutate_code = function(code) {
602+
set_mutate_code = function(code, staged = FALSE) {
633603
stopifnot(is_character_vector(code, 0, 1) || inherits(code, "PythonCodeClass"))
604+
code_obj <- ifelse(staged, "staged_mutate_code", "mutate_code")
605+
vars_list <- ifelse(staged, "staged_mutate_vars", "mutate_vars")
634606

635607
if (inherits(code, "PythonCodeClass")) {
636608
r <- PythonCodeClass$new()
637-
r$append(private$mutate_code)
638-
private$mutate_code <- r
609+
r$append(private[[code_obj]])
610+
private[[code_obj]] <- r
639611

640612
code <- code$get_code()
641613
}
642614

643615
if (length(code) > 0 && code != "") {
644-
private$mutate_code$set_code(
616+
private[[code_obj]]$set_code(
645617
code = code,
646618
dataname = private$dataname,
647-
deps = names(private$mutate_vars)
619+
deps = names(private[[vars_list]])
648620
)
649621
}
650622

tests/testthat/test-dataset_connector.R

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ testthat::test_that("DatasetConnector mutate method with delayed logic", {
873873
expect_true(all(names(get_raw_data(t_dc)) %in% c("head_letters", "tail_letters", "head_integers", "one", "five"))),
874874
regexp = "Mutation is delayed"
875875
)
876-
TODO
876+
877877
# load_dataset, which calls pull method, will reset to original state because dependencies have changed
878878
expect_message(
879879
load_dataset(t_dc),
@@ -885,6 +885,13 @@ testthat::test_that("DatasetConnector mutate method with delayed logic", {
885885
expect_true(all(names(get_raw_data(t_dc)) %in% c("head_letters"))),
886886
regexp = "Mutation is delayed"
887887
)
888+
expect_message(
889+
expect_equal(
890+
pretty_code_string(t_dc$get_code()),
891+
c("test_dc <- data.frame(head_letters = c(\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"))")
892+
),
893+
"There are mutate code that are delayed and not part of this output"
894+
)
888895

889896
# confirming that mutation has not happened
890897
expect_message(

0 commit comments

Comments
 (0)