From 55d05f394d0c5b5739919a7515e7c2820723c1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marija=20Jovanovi=C4=87?= Date: Fri, 2 Feb 2024 16:58:09 +0000 Subject: [PATCH] Fix all requests from CRAN manual review --- .Rbuildignore | 1 + CRAN-SUBMISSION | 4 +- DESCRIPTION | 15 +- LICENSE | 202 ------------------------ NEWS.md | 2 - R/class-file.R | 16 +- R/class-files.R | 22 +-- R/class-project.R | 9 +- README.md | 4 +- cran-comments.md | 9 ++ inst/WORDLIST | 8 + man/File.Rd | 6 +- tests/testthat/_snaps/class-project.md | 2 +- tests/testthat/test-class-file.R | 6 + tests/testthat/test-utils-validations.R | 4 +- 15 files changed, 65 insertions(+), 245 deletions(-) delete mode 100644 LICENSE diff --git a/.Rbuildignore b/.Rbuildignore index 655c091..850104d 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,6 +1,7 @@ ^.*\.Rproj$ ^.covrignore ^CRAN-SUBMISSION$ +^LICENSE\.md$ ^\.DS_Store$ ^\.Rproj\.user$ ^\.github$ diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION index be25adb..78de978 100644 --- a/CRAN-SUBMISSION +++ b/CRAN-SUBMISSION @@ -1,3 +1,3 @@ Version: 0.1.0 -Date: 2024-01-16 17:25:52 UTC -SHA: 4f3005d57e8525dc00ee25f3da32b3932d05df8c +Date: 2024-02-02 14:55:17 UTC +SHA: 27fa8f5ee3169d24c65b3cf68722829c51341730 diff --git a/DESCRIPTION b/DESCRIPTION index d929814..eeef86b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,17 +1,18 @@ Package: sevenbridges2 Type: Package -Title: Seven Bridges Platform API Client in R +Title: The 'Seven Bridges Platform' API Client Version: 0.1.0 Authors@R: c( - person("Marija", "Jovanovic", email = "marija.jovanovic@velsera.com", role = c("aut", "cre")), + person("Marija", "Gacic", email = "marija.jovanovic@velsera.com", role = c("aut", "cre")), person("Marko", "Trifunovic", email = "marko.trifunovic@sevenbridges.com", role = c("aut")), person("Vladimir", "Obucina", email = "vladimir.obucina@velsera.com", role = c("aut")), - person("Seven Bridges Genomics Inc.", role = c("cph", "fnd")) + person("Velsera", role = c("cph", "fnd")) ) -Maintainer: Marija Jovanovic -Description: R client and utilities for Seven Bridges platform API, from Cancer - Genomics Cloud to other Seven Bridges supported platforms. -License: Apache License 2.0 | file LICENSE +Maintainer: Marija Gacic +Description: R client and utilities for 'Seven Bridges Platform' API, from 'Cancer Genomics Cloud' + to other 'Seven Bridges' supported platforms. API documentation is hosted publicly + at . +License: Apache License 2.0 Encoding: UTF-8 LazyData: true VignetteBuilder: knitr diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7a4a3ea..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/NEWS.md b/NEWS.md index 704c31c..b70538d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,3 @@ # sevenbridges2 0.1.0 -# sevenbridges2 0.0.1 - * Initial CRAN submission. diff --git a/R/class-file.R b/R/class-file.R index e00a037..6bd90bc 100644 --- a/R/class-file.R +++ b/R/class-file.R @@ -771,10 +771,10 @@ File <- R6::R6Class( #' ) #' #' # Download file object - #' file_object$download() + #' file_object$download(directory_path = ".") #' } #' - download = function(directory_path = getwd(), + download = function(directory_path, filename = self$name, method = "curl", # nolint start @@ -786,8 +786,12 @@ File <- R6::R6Class( self$url <- self$get_download_url() } - # check if directory exists - check_download_path(directory_path, filename) + if (is_missing(directory_path)) { + rlang::abort("Please, provide directory path where to download your file.") # nolint + } else { + # check if directory exists + check_download_path(directory_path, filename) + } # check retry parameters check_retry_params(retry_count, parameter_to_validate = "count") @@ -833,12 +837,12 @@ File <- R6::R6Class( } # wait for 5 seconds before new attemt - print the countdown message for (seconds_left in retry_timeout:1) { - cat(glue::glue_col("Retrying in {green {seconds_left}} seconds...", "\r")) # nolint + rlang::inform(glue::glue_col("Retrying in {green {seconds_left}} seconds...", "\r")) # nolint Sys.sleep(1) } # print a blank line to clear the countdown message - cat("\r", " ", "\r") + rlang::inform(glue::glue("\r", " ", "\r")) # nolint } ) } diff --git a/R/class-files.R b/R/class-files.R index 7c8378b..00a38b6 100644 --- a/R/class-files.R +++ b/R/class-files.R @@ -243,6 +243,7 @@ Files <- R6::R6Class( #' #' @importFrom checkmate assert_list #' @importFrom glue glue_col + #' @importFrom rlang inform #' #' @examples #' \dontrun{ @@ -288,22 +289,13 @@ Files <- R6::R6Class( ) element <- setNames(list(element), names(res[i])) result <- append(result, element) - cat( - glue::glue_col("{blue Original file id: } - {names(res[i])}"), - "\n" + rlang::inform( + glue::glue_col( + "{blue Original file id:} {names(res[i])}", "\n", + "{blue Copied file id:} {res[[i]]$new_file_id}", "\n", + "{blue Copied file name:} {res[[i]]$new_file_name}", "\n" + ) ) - cat( - glue::glue_col("{blue Copied file id: } - {res[[i]]$new_file_id}"), - "\n" - ) - cat( - glue::glue_col("{blue Copied file name: } - {res[[i]]$new_file_name}"), - "\n" - ) - cat("\n") } invisible(result) }, # nocov end diff --git a/R/class-project.R b/R/class-project.R index 506c20f..1d17730 100644 --- a/R/class-project.R +++ b/R/class-project.R @@ -123,9 +123,12 @@ Project <- R6::R6Class( #' } #' print = function() { - cat(glue::glue_col("{blue Project name: } {self$name}"), "\n") # nocov - cat(glue::glue_col("{blue Project id: } {self$id}"), "\n") # nocov - }, + # nocov start + rlang::inform(glue::glue_col( + "{blue Project name: } {self$name} ", "\n", + "{blue Project id: } {self$id} ", "\n" + )) + }, # nocov end # Print Project object in detail ------------------------------------------ #' @description Detailed print method for Project class. diff --git a/README.md b/README.md index fd01155..dbe8d75 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,6 @@ Contributors should sign the [Seven Bridges Contributor Agreement](https://secur ## Copyright -© 2023 Seven Bridges Genomics, Inc. All rights reserved. +© 2024 Velsera, Inc. All rights reserved. -This project is licensed under the terms of the [Apache License 2.0](LICENSE). +This project is licensed under the terms of the Apache License 2.0. diff --git a/cran-comments.md b/cran-comments.md index 40971f0..258bca1 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -12,3 +12,12 @@ This is a resubmission. In this version I have: * Updated classes documentation to meet styling and formatting policies. * Updated DESCRIPTION file. + +* Added API reference url in description of DESCRIPTION file. + +* Removed License file and its reference in DESCRIPTION since we don't have + additional restrictions to the license. + +* Replaced usage of cat() with rlang's inform function. + +* Updated tests to not use getwd() function. diff --git a/inst/WORDLIST b/inst/WORDLIST index 0f157ae..bfab754 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -4,6 +4,7 @@ ae AES AliCloud amazonaws +apache api arg Arial @@ -83,6 +84,7 @@ fnd FQ fromJSON FS +Gacic GC GCP GCS @@ -90,6 +92,7 @@ gcs genomeFastaFiles geometricPrecision getenv +getwd GFF Github github @@ -120,6 +123,8 @@ knitr LazyData len li +licensable +Licensor lifecycle Lifecycle linearGradient @@ -133,6 +138,7 @@ marko Marko members's memoization +MERCHANTABILITY microsoft na namelookup @@ -165,6 +171,7 @@ resubmission Resubmission rfranklin rlang +rlang's rmarkdown RO Roboto @@ -190,6 +197,7 @@ str stringi stringr subfields +sublicense subprocess svg Sys diff --git a/man/File.Rd b/man/File.Rd index 4e6e7cc..dd64dfa 100644 --- a/man/File.Rd +++ b/man/File.Rd @@ -238,7 +238,7 @@ file_object <- File$new( ) # Download file object - file_object$download() + file_object$download(directory_path = ".") } @@ -879,7 +879,7 @@ your download, you should provide the path to the destination directory as \code{directory_path} parameter. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{File$download( - directory_path = getwd(), + directory_path, filename = self$name, method = "curl", retry_count = getOption("sevenbridges2")$default_retry_count, @@ -916,7 +916,7 @@ file_object <- File$new( ) # Download file object - file_object$download() + file_object$download(directory_path = ".") } } diff --git a/tests/testthat/_snaps/class-project.md b/tests/testthat/_snaps/class-project.md index 5fe4015..30b5823 100644 --- a/tests/testthat/_snaps/class-project.md +++ b/tests/testthat/_snaps/class-project.md @@ -2,7 +2,7 @@ Code setup_project_obj$print() - Output + Message Project name: Project name Project id: project_id diff --git a/tests/testthat/test-class-file.R b/tests/testthat/test-class-file.R index 26d4a92..4b69a7f 100644 --- a/tests/testthat/test-class-file.R +++ b/tests/testthat/test-class-file.R @@ -227,6 +227,12 @@ test_that("File download method throws error when expected", { retry_count = 5, retry_timeout = NULL ) + # Test with no directory path set + testthat::expect_error( + setup_file_obj$download(), + regexp = "Please, provide directory path where to download your file.", # nolint + fixed = TRUE + ) # Test with bad directory path testthat::expect_error( do.call(setup_file_obj$download, bad_directory_path_param), diff --git a/tests/testthat/test-utils-validations.R b/tests/testthat/test-utils-validations.R index 8d36be0..87bcec0 100644 --- a/tests/testthat/test-utils-validations.R +++ b/tests/testthat/test-utils-validations.R @@ -231,7 +231,7 @@ test_that("check_download_path function throws error when parameters are not val filename_invalid_values <- c(NA, NULL) for (filename in filename_invalid_values) { testthat::expect_error( - check_download_path(directory_path = getwd(), filename = filename), + check_download_path(directory_path = tempdir(), filename = filename), "The filename parameter is missing." ) } @@ -243,7 +243,7 @@ test_that("check_download_path function throws error when parameters are not val ) for (filename in filename_invalid_values) { testthat::expect_error( - check_download_path(directory_path = getwd(), filename = filename), + check_download_path(directory_path = tempdir(), filename = filename), "The filename parameter should be a length-one string." ) }