software-review
software-review copied to clipboard
mbquartR: Finding Manitoba Quarter Sections
Submitting Author Name: Alexander Koiter Submitting Author Github Handle: @alex-koiter Other Package Authors Github handles: (comma separated, delete if none) Repository: https://github.com/alex-koiter/mbquartR Version submitted: 0.0.0.9000 Submission type: Standard Editor: @jhollist Reviewers: TBD
Archive: TBD Version accepted: TBD Language: en
- Paste the full DESCRIPTION file inside a code block below:
Package: mbquartR Title: Finding Manitoba Quarter Sections Version: 0.0.0.9000 Authors@R: person("Alex", "Koiter", , "[email protected]", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-9355-9561")) Description: This package has three main functions: 1) find the coordinates of a quarter sections given the legal land description (e.g., "NE-11-33-29W"); 2) find the legal land description using coordinates (lat and long); and 3) plot these points on a map. License: MIT + file LICENSE URL: http://alexkoiter.ca/mbquartR/, https://github.com/alex-koiter/mbquartR BugReports: https://github.com/alex-koiter/mbquartR/issues Encoding: UTF-8 Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.1 Suggests: testthat (>= 3.0.0), curl (>= 5.2.1), knitr, rmarkdown Config/testthat/edition: 3 Imports: dplyr (>= 1.1.4), purrr (>= 1.0.2), sf (>= 1.0.16), tibble (>= 3.2.1), tidyr (>= 1.3.1), stringr (>= 1.5.1), units (>= 0.8.5), mapview (>= 2.11.2), readr (>= 2.1.4), crayon (>= 1.5.2), rlang VignetteBuilder: knitr
Scope
-
Please indicate which category or categories from our package fit policies this package falls under: (Please check an appropriate box below. If you are unsure, we suggest you make a pre-submission inquiry.):
- [x] data retrieval
- [x] data extraction
- [ ] data munging
- [ ] data deposition
- [ ] data validation and testing
- [ ] workflow automation
- [ ] version control
- [ ] citation management and bibliometrics
- [ ] scientific software wrappers
- [ ] field and lab reproducibility tools
- [ ] database software bindings
- [ ] geospatial data
- [ ] text analysis
-
Explain how and why the package falls under these categories (briefly, 1-2 sentences):
This package enables users to download the Manitoba Original Survey Legal Descriptions data from the Manitoba government geoportal. It includes functions that allow users to easily search for parcels of land (i.e., quarter sections) by either the legal land description or by coordinates and plot them on an interactive map.
- Who is the target audience and what are scientific applications of this package?
The target audience are those who work with geospatial data in Manitoba, particularly those who are working with rural or farm parcels of land where the legal land description is commonly used as the method of identifying the location. Also anyone who needs to quickly go back and forth between geographic coordinates and the legal land description. Currently, there are a few web-based tools (https://geoportal.gov.mb.ca/datasets/11fa11f9015b45438d6493dcb3d8071c/, https://www.masc.mb.ca/masc.nsf/land_parcel_info.html, https://legallandconverter.com/p4.html) that allow users to locate land parcels but do not allow for batch processing, do not return coordinates, and/or are fee based. Being able to convert back and forth is also helpful for scientist preparing outreach materials.
- Are there other R packages that accomplish the same thing? If so, how does yours differ or meet our criteria for best-in-category?
No
- (If applicable) Does your package comply with our guidance around Ethics, Data Privacy and Human Subjects Research?
NA. This package provides access to publicly available data.
- If you made a pre-submission inquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted.
https://github.com/ropensci/software-review/issues/649
- Explain reasons for any
pkgcheckitems which your package is unable to pass.
pkgcheck passes fully with github actions but fails locally because it doesn't think I have CI (but I do).
Technical checks
Confirm each of the following by checking the box.
- [x] I have read the rOpenSci packaging guide.
- [x] I have read the author guide and I expect to maintain this package for at least 2 years or to find a replacement.
This package:
- [x] does not violate the Terms of Service of any service it interacts with.
- [x] has a CRAN and OSI accepted license.
- [x] contains a README with instructions for installing the development version.
- [x] includes documentation with examples for all functions, created with roxygen2.
- [x] contains a vignette with examples of its essential functions and uses.
- [x] has a test suite.
- [x] has continuous integration, including reporting of test coverage.
Publication options
-
[ ] Do you intend for this package to go on CRAN?
-
[ ] Do you intend for this package to go on Bioconductor?
-
[ ] Do you wish to submit an Applications Article about your package to Methods in Ecology and Evolution? If so:
MEE Options
- [ ] The package is novel and will be of interest to the broad readership of the journal.
- [ ] The manuscript describing the package is no longer than 3000 words.
- [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see MEE's Policy on Publishing Code)
- (Scope: Do consider MEE's Aims and Scope for your manuscript. We make no guarantee that your manuscript will be within MEE scope.)
- (Although not required, we strongly recommend having a full manuscript prepared when you submit here.)
- (Please do not submit your package separately to Methods in Ecology and Evolution)
Code of conduct
- [x] I agree to abide by rOpenSci's Code of Conduct during the review process and in maintaining my package should it be accepted.
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.
:rocket:
Editor check started
:wave:
Checks for mbquartR (v0.0.0.9000)
git hash: 49820566
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'codemeta.json' file.
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_check_mark: Package has continuous integration checks.
- :heavy_check_mark: Package coverage is 88%.
- :heavy_check_mark: R CMD check found no errors.
- :heavy_check_mark: R CMD check found no warnings.
Package License: MIT + file LICENSE
1. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 15 |
| internal | mbquartR | 15 |
| internal | utils | 4 |
| internal | stats | 2 |
| imports | dplyr | 9 |
| imports | sf | 7 |
| imports | tibble | 2 |
| imports | readr | 2 |
| imports | purrr | 1 |
| imports | mapview | 1 |
| imports | tidyr | NA |
| imports | stringr | NA |
| imports | units | NA |
| imports | crayon | NA |
| imports | rlang | NA |
| suggests | testthat | NA |
| suggests | curl | NA |
| suggests | knitr | NA |
| suggests | rmarkdown | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
c (7), getOption (2), by (1), curlGetHeaders (1), force (1), paste0 (1), search (1), url (1)
mbquartR
cache_file (3), cache_dir (2), cache_load (2), centroid (2), cache_check (1), cache_dl (1), closest_centoid (1), map_quarter (1), quarters_dl (1), search_coord (1)
dplyr
mutate (2), select (2), (1), join_by (1), last_col (1), rename (1), right_join (1)
sf
st_as_sf (5), st_transform (2)
utils
data (2), menu (2)
readr
read_csv (2)
stats
dist (2)
tibble
rowid_to_column (1), tibble (1)
mapview
mapview (1)
purrr
map2 (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
2. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 5 files) and
- 1 authors
- 1 vignette
- no internal data file
- 11 imported packages
- 4 exported functions (median 19 lines of code)
- 21 non-exported functions in R (median 7 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
loc= "Lines of Code"fn= "function"exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 5 | 31.6 | |
| files_vignettes | 1 | 62.0 | |
| files_tests | 5 | 76.5 | |
| loc_R | 176 | 20.2 | |
| loc_vignettes | 52 | 9.3 | |
| loc_tests | 110 | 39.4 | |
| num_vignettes | 1 | 59.0 | |
| n_fns_r | 25 | 34.3 | |
| n_fns_r_exported | 4 | 20.0 | |
| n_fns_r_not_exported | 21 | 41.1 | |
| n_fns_per_file_r | 3 | 45.9 | |
| num_params_per_fn | 2 | 8.2 | |
| loc_per_fn_r | 9 | 24.9 | |
| loc_per_fn_r_exp | 20 | 46.4 | |
| loc_per_fn_r_not_exp | 7 | 18.9 | |
| rel_whitespace_R | 28 | 33.0 | |
| rel_whitespace_vignettes | 54 | 19.0 | |
| rel_whitespace_tests | 25 | 41.2 | |
| doclines_per_fn_exp | 29 | 31.1 | |
| doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
| fn_call_network_size | 16 | 40.7 |
2a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
3. goodpractice and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
| id | name | conclusion | sha | run_number | date |
|---|---|---|---|---|---|
| 10967106383 | pages build and deployment | success | 284672 | 9 | 2024-09-20 |
| 10967082710 | pkgcheck | success | 498205 | 3 | 2024-09-20 |
| 10967082712 | pkgdown | success | 498205 | 10 | 2024-09-20 |
| 10967082708 | R-CMD-check | success | 498205 | 17 | 2024-09-20 |
| 10967082707 | test-coverage | success | 498205 | 17 | 2024-09-20 |
3b. goodpractice results
R CMD check with rcmdcheck
rcmdcheck found no errors, warnings, or notes
Test coverage with covr
Package coverage: 87.97
Cyclocomplexity with cyclocomp
No functions have cyclocomplexity >= 15
Static code analyses with lintr
lintr found the following 1 potential issues:
| message | number of times |
|---|---|
| Avoid library() and require() calls in packages | 1 |
Package Versions
| package | version |
|---|---|
| pkgstats | 0.1.6.17 |
| pkgcheck | 0.1.2.58 |
Editor-in-Chief Instructions:
This package is in top shape and may be passed on to a handling editor
Hi @alex-koiter, the rOpenSci bot says this is all good, but when I run checks locally, I get an error.
> devtools::check()
══ Documenting ════════════════════════════════════════════════════════════════════════════
ℹ Installed roxygen2 version (7.3.2) doesn't match required (7.3.1)
✖ `check()` will not re-document this package
══ Building ═══════════════════════════════════════════════════════════════════════════════
Setting env vars:
• CFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXXFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXX11FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX14FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX17FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX20FLAGS: -Wall -pedantic -fdiagnostics-color=always
── R CMD build ────────────────────────────────────────────────────────────────────────────
✔ checking for file ‘/Users/adamsparks/tmp/mbquartR/DESCRIPTION’ ...
─ preparing ‘mbquartR’:
✔ checking DESCRIPTION meta-information ...
─ installing the package to build vignettes
E creating vignettes (1.5s)
--- re-building ‘mbquartR.Rmd’ using rmarkdown
Quitting from lines 69-71 [example] (mbquartR.Rmd)
Error: processing vignette 'mbquartR.Rmd' failed with diagnostics:
Data doesn't exist, please download with `quarters_dl()` first
--- failed re-building ‘mbquartR.Rmd’
SUMMARY: processing the following file failed:
‘mbquartR.Rmd’
Error: Vignette re-building failed.
Execution halted
Error:
! ! System command 'R' failed
Show Traceback
Please ignore the roxygen2 comment, I'm concerned about the Error creating vignettes.
Thanks @adamhsparks! The issue was that the vignette needed to access data that hadn't been downloaded yet. I have now created some sample data that the vignette uses. Also found some additional typos and made a few other small changes. It should work now.
Looks good, @alex-koiter. Thanks, I'll proceed from here.
@ropensci-review-bot assign @jhollist as editor
Assigned! @jhollist is now the editor
@alex-koiter I will take some time today/tomorrow to dig into this a bit and will get back to you with any suggestions. Looking forward to the review process!
@alex-koiter I am just now starting to look at this (apologies!!) I still get the the same error as @adamhsparks with the vignette build. I have cloned and attempted to build https://github.com/alex-koiter/mbquartR and get the error. Perhaps the fix wasn't pushed?
Also I see no documentation on your non-exported functions (Statistical Properties in https://github.com/ropensci/software-review/issues/658#issuecomment-2366968970). While not technically required, it would be an easy area of improvement to add documentation on these non-exported functions.
@jhollist It turns out that I only partially resolved the issue (or fixed a different one). I have resolved the error so you should be able to clone and build the package now. I will take me a few days to get the documentation for the internal functions completed and I will let you know once that is done. Thanks!
And FYI, check runs now on my machine! I did see this:
─ checking examples ... [43s] OK (43.4s) Examples with CPU (user + system) or elapsed time > 5s user system elapsed map_quarter 23.53 2.08 28.48 search_coord 10.39 0.65 8.47
I know this is system specific so might not be a real issue, but if there is an easy way to have the example run a bit faster that would be good.
@jhollist The internal function documentation is now complete. As for the run time, I think this may be an artifact of how the functions are written. This is where the reviewers may be able to provide some suggestions. Thanks!
@alex-koiter Thanks! Looks good on my end. Will start looking for reviewers now.
@ropensci-review-bot assign @sheilasaia as reviewer
@sheilasaia added to the reviewers list. Review due date is 2024-11-29. Thanks @sheilasaia for accepting to review! Please refer to our reviewer guide.
rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.
@sheilasaia: If you haven't done so, please fill this form for us to update our reviewers records.
@ropensci-review-bot assign @emilymarkowitz-noaa as reviewer
@emilymarkowitz-noaa added to the reviewers list. Review due date is 2024-12-11. Thanks @emilymarkowitz-noaa for accepting to review! Please refer to our reviewer guide.
rOpenSci’s community is our best asset. We aim for reviews to be open, non-adversarial, and focused on improving software quality. Be respectful and kind! See our reviewers guide and code of conduct for more.
@EmilyMarkowitz-NOAA: If you haven't done so, please fill this form for us to update our reviewers records.
:calendar: @sheilasaia you have 2 days left before the due date for your review (2024-11-29).
Sorry that I'm a couple of days late in submitting my review. I blame the recent US holidays. 😄
Package Review
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
- Briefly describe any working relationship you have (had) with the package authors.
- [X] As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- [X] A statement of need: clearly stating problems the software is designed to solve and its target audience in README
- [X] Installation instructions: for the development version of package and any non-standard dependencies in README
- [X] Vignette(s): demonstrating major functionality that runs successfully locally
- [X] Function Documentation: for all exported functions
- [X] Examples: (that run successfully locally) for all exported functions
- [ ] Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with
URL,BugReportsandMaintainer(which may be autogenerated viaAuthors@R).
Additional notes: Please see my comments below for more info on the community guidelines.
Functionality
- [X] Installation: Installation succeeds as documented.
- [X] Functionality: Any functional claims of the software have been confirmed.
- [X] Performance: Any performance claims of the software have been confirmed.
- [ ] Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine.
- [ ] Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.
Additional notes: I was having trouble using the pkgcheck() function; kept getting "Error: Unauthorized (HTTP 401)". I retried directly with devtools and pasted the results at the end of this review. There were a couple of tests that failed so please see those sections below. The author appears to have followed all the packaging guidelines listed here (https://devguide.ropensci.org/pkg_building.html), but I've never developed a package before and there are a lot of guidelines, so I'm not 100% of that all the guidelines were met. This is why I left that review section unchecked.
Estimated hours spent reviewing: 3
- [ ] Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.
That's not necessary, but thank you for asking.
Review Comments
I was able to install the R package, download the dataset using quarters_dl(), and get the three main functions (search_coord(), search_legal(), and map_quarter()) to run as expected. I'm on a MacOS with M2 ARM chip. Provided my session info below just in case that's helpful.
Overall, I thought the package worked well and was well documented. While the application has a very specific audience, it makes sense to me that this would be useful for people working on geospatial projects in the the Manitoba region. Especially, for folks trying to automate the identification of Manitoba quarters. I had a few suggestions which I describe generally below and then provide detailed comments on below.
First, I recommend the author include more details in the package README and website introduction page on the use cases and intended users. The information provided in the rOpenSci package application was very helpful and could be repeated here. In a similar vain, it would be great to have more information in the package README and website about the Manitoba quarter sections themselves. Can the author provide an overview with this and show a map of all the sections in the introduction of this package? I'm guessing they are polygons used to denote various regions of Manitoba. More information on this would be helpful.
Second, there are a few cases where the error messages could be revised to provide more information to the user. I gave some suggestions for this in the detailed comments below.
Third, I see only one person listed as a maintainer on this package. Is there anyone else that can also be listed for redundancy? How often do the Manitoba sections get updated? If not very frequently, then I understand this might not be a priority, but thought it might be an important to ask about how this would be maintained into the future. The author doesn't include a CONTRIBUTING.md file in the R package on GitHub to explain how folks can submit issues or suggest addtional features, which is something that I recommend adding and is part of the community guidelines.
Thanks for the opportunity to review this interesting new R package and please reach out if you have any follow up questions or need any further clarification!
Detailed Comments:
-
In the main README and package website an example coordinate is given. I recommend the author noting that a negative sign must be used in front of of the longitude value sign to designate western hemisphere and positive sign must be used in front of the latitude value sign to designate northern hemisphere due to the purpose of the R package. I suggest this because the user might use another way to represent their coordinate that is not compatible with the input. This specification can also be added to the
search_coord()function documentation. -
Related to comment 1, I recommend the author add a test and corresponding error message that tells the user the value they entered is not formatted correctly (e.g.,
long = 101.4656). For the example that I just gave, the error message could them that they must enter a long value from -90 to -120 or whatever is available for the Manitoba quarter data. For a non-negative long value, I get the error "One or more coordinates greater than 1000m from nearest quarter section center. Please check your data.", which is good, but doesn't get to the crux of the missing negative sign. For a character (e.g.,long = "101.4656W"), I get the error "Longitude and latitude must be numbers.", which is helpful and doesn't need any revision. I also recommend this test could be done with the range of the latitude value, and output a similar "out of range" error. -
I like that you can enter one or a list of coordinate values. These seems helpful for automating tasks.
-
In the main README and package website it says "For more details checkout the mbquartR website.". I recommend the author directly say that users can view the website for vignettes/code examples. I also recommend removing this text from the website since it is repetitive and recursive.
-
It might be helpful for the author to say in the README and website introduction some potential use-cases for this. Some of the responses given for the ropensci package submission were helpful to understanding the audience and use case.
-
I'm not very familiar with the legal land descriptions in Manitoba so I wasn't able to make up a value and test it, but the examples provided in the vignette worked well for me without any errors.
-
I like that there is a map showing the values and it's color coded by the different quarters, but I recommend the author including a built in polygon line map with all the quarter boundaries in it as well. Then each coordinate could be plotted with the corresponding quarter coloring within the quarter boundary. For example, when I search
result <- search_coord(long = c(-101.4656, -99.99768, -101.4656), lat = c(51.81913, 49.928926, 51.81913)), I get three output values that are found in only two distinct quarters. When I usemap_quarter(result), there are only two points on the plot. This is a little confusing at first, because I'm expecting to see three points, one for each of the coordinates that I'm searching. I'm also not really sure where one quarter stops and the other begins because only points are shown on the map. I hope that makes sense. -
I recommend the author note in the
search_coord()function that a list can also be taken for long and lat. That's not clear in the documentation at present. I have the same recommendation forsearch_legal(). -
The search function took 2.566 s to run for three coordinates (i.e.,
resultas described above in comment 7) and the mapping function took 3.035 s to run for those same three coordinates. It seems relatively fast to me. I saw @jhollist comment above and wanted to response to that.
My R session info:
R version 4.4.2 (2024-10-31)
Platform: aarch64-apple-darwin20
Running under: macOS Sonoma 14.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: America/New_York
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.4.2 tools_4.4.2
Devtools check output:
> devtools::check()
══ Documenting ═══════════════════════════════════════════════════════════════════════════════════════════════
ℹ Installed roxygen2 version (7.3.2) doesn't match required (7.3.1)
✖ `check()` will not re-document this package
══ Building ══════════════════════════════════════════════════════════════════════════════════════════════════
Setting env vars:
• CFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXXFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXX11FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX14FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX17FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX20FLAGS: -Wall -pedantic -fdiagnostics-color=always
── R CMD build ───────────────────────────────────────────────────────────────────────────────────────────────
✔ checking for file ‘/Users/sheila/Documents/github/ropensci_reviews/mbquartR/DESCRIPTION’ ...
─ preparing ‘mbquartR’:
✔ checking DESCRIPTION meta-information
─ installing the package to build vignettes
✔ creating vignettes (7.8s)
─ checking for LF line-endings in source and make files and shell scripts (423ms)
─ checking for empty or unneeded directories
─ building ‘mbquartR_0.0.0.9000.tar.gz’
══ Checking ══════════════════════════════════════════════════════════════════════════════════════════════════
Setting env vars:
• _R_CHECK_CRAN_INCOMING_REMOTE_ : FALSE
• _R_CHECK_CRAN_INCOMING_ : FALSE
• _R_CHECK_FORCE_SUGGESTS_ : FALSE
• _R_CHECK_PACKAGES_USED_IGNORE_UNUSED_IMPORTS_: FALSE
• NOT_CRAN : true
── R CMD check ───────────────────────────────────────────────────────────────────────────────────────────────
─ using log directory ‘/private/var/folders/nl/0cjxjn7n67s40k8mm3cd1htr0000gn/T/RtmpHqAkNM/filec85573308e57/mbquartR.Rcheck’
─ using R version 4.4.2 (2024-10-31)
─ using platform: aarch64-apple-darwin20
─ R was compiled by
Apple clang version 14.0.0 (clang-1400.0.29.202)
GNU Fortran (GCC) 12.2.0
─ running under: macOS Sonoma 14.5
─ using session charset: UTF-8
─ using options ‘--no-manual --as-cran’
✔ checking for file ‘mbquartR/DESCRIPTION’
─ this is package ‘mbquartR’ version ‘0.0.0.9000’
─ package encoding: UTF-8
✔ checking package namespace information
✔ checking package dependencies (1.1s)
✔ checking if this is a source package
✔ checking if there is a namespace
✔ checking for executable files ...
✔ checking for hidden files and directories
✔ checking for portable file names
✔ checking for sufficient/correct file permissions
✔ checking serialization versions
✔ checking whether package ‘mbquartR’ can be installed (1.4s)
✔ checking installed package size
✔ checking package directory ...
✔ checking for future file timestamps ...
✔ checking ‘build’ directory
✔ checking DESCRIPTION meta-information ...
✔ checking top-level files ...
✔ checking for left-over files
✔ checking index information ...
✔ checking package subdirectories (449ms)
✔ checking code files for non-ASCII characters ...
✔ checking R files for syntax errors ...
✔ checking whether the package can be loaded ...
✔ checking whether the package can be loaded with stated dependencies ...
✔ checking whether the package can be unloaded cleanly ...
✔ checking whether the namespace can be loaded with stated dependencies ...
✔ checking whether the namespace can be unloaded cleanly ...
✔ checking whether startup messages can be suppressed (427ms)
✔ checking dependencies in R code (3.5s)
✔ checking S3 generic/method consistency ...
✔ checking replacement functions ...
✔ checking foreign function calls ...
✔ checking R code for possible problems (1.9s)
✔ checking Rd files ...
✔ checking Rd metadata ...
✔ checking Rd line widths ...
✔ checking Rd cross-references ...
✔ checking for missing documentation entries ...
✔ checking for code/documentation mismatches (604ms)
✔ checking Rd \usage sections (391ms)
✔ checking Rd contents ...
✔ checking for unstated dependencies in examples ...
✔ checking contents of ‘data’ directory
✔ checking data for non-ASCII characters ...
✔ checking LazyData
✔ checking data for ASCII and uncompressed saves ...
✔ checking installed files from ‘inst/doc’ ...
✔ checking files in ‘vignettes’ ...
─ checking examples ... [28s/20s] OK (20.6s)
Examples with CPU (user + system) or elapsed time > 5s
user system elapsed
map_quarter 17.004 0.727 13.568
search_coord 6.243 0.226 4.153
✔ checking for unstated dependencies in ‘tests’ ...
─ checking tests ...
Running the tests in ‘tests/testthat.R’ failed.
Last 13 lines of output:
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 0 | SKIP 0 | PASS 42 ]
Error: Test failures
Execution halted
✔ checking for unstated dependencies in vignettes (338ms)
✔ checking package vignettes ...
✔ checking re-building of vignette outputs (5.9s)
✔ checking for non-standard things in the check directory
✔ checking for detritus in the temp directory
See
‘/private/var/folders/nl/0cjxjn7n67s40k8mm3cd1htr0000gn/T/RtmpHqAkNM/filec85573308e57/mbquartR.Rcheck/00check.log’
for details.
── R CMD check results ────────────────────────────────────────────────────────────── mbquartR 0.0.0.9000 ────
Duration: 1m 10s
❯ checking tests ...
See below...
── Test failures ─────────────────────────────────────────────────────────────────────────────── testthat ────
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> library(testthat)
> library(mbquartR)
>
> test_check("mbquartR")
[ FAIL 2 | WARN 0 | SKIP 0 | PASS 42 ]
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-search_coord.R:6:3'): search_coord() returns dataframe ─────────
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
── Error ('test-search_legal.R:6:3'): search_legal() returns dataframe ─────────
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 0 | SKIP 0 | PASS 42 ]
Error: Test failures
Execution halted
1 error ✖ | 0 warnings ✔ | 0 notes ✔
Test check output:
> devtools::test()
ℹ Testing mbquartR
Attaching package: ‘testthat’
The following object is masked from ‘package:devtools’:
test_file
✔ | F W S OK | Context
✔ | 22 | download [9.3s]
⠏ | 0 | mapping GDAL version >= 3.1.0 | setting mapviewOptions(fgb = TRUE)
✔ | 5 | mapping [6.8s]
✖ | 1 8 | search_coord [5.6s]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_coord.R:6:3): search_coord() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
✖ | 1 7 | search_legal [7.2s]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_legal.R:6:3): search_legal() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────
══ Results ═══════════════════════════════════════════════════════════════════════════════════════════════════
Duration: 29.3 s
── Failed tests ──────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_coord.R:6:3): search_coord() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
Error (test-search_legal.R:6:3): search_legal() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 0 | SKIP 0 | PASS 42 ]
:calendar: @emilymarkowitz-noaa you have 2 days left before the due date for your review (2024-12-11).
Package Review
Please check off boxes as applicable, and elaborate in comments below. Your review is not limited to these topics, as described in the reviewer guide
- Briefly describe any working relationship you have (had) with the package authors.
- [x] As the reviewer I confirm that there are no conflicts of interest for me to review this work (if you are unsure whether you are in conflict, please speak to your editor before starting your review).
Documentation
The package includes all the following forms of documentation:
- [X] A statement of need: clearly stating problems the software is designed to solve and its target audience in README
- [X] Installation instructions: for the development version of package and any non-standard dependencies in README
- [X] Vignette(s): demonstrating major functionality that runs successfully locally
- [X] Function Documentation: for all exported functions
- [X] Examples: (that run successfully locally) for all exported functions
- [X] Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with
URL,BugReportsandMaintainer(which may be autogenerated viaAuthors@R).
Functionality
- [X] Installation: Installation succeeds as documented. See output below.
- [X] Functionality: Any functional claims of the software have been confirmed.
- [X] Performance: Any performance claims of the software have been confirmed.
- [ ] Automated tests: Unit tests cover essential functions of the package and a reasonable range of inputs and conditions. All tests pass on the local machine. There are some issues with the tests, see output below.
- [ ] Packaging guidelines: The package conforms to the rOpenSci packaging guidelines.
Estimated hours spent reviewing: 3
- [ ] Should the author(s) deem it appropriate, I agree to be acknowledged as a package reviewer ("rev" role) in the package DESCRIPTION file.
No need, but thanks for offering.
Review Comments
In addition to agreeing with the first reviewer's comments, I have a few to add, which I've mostly left in the numbered bullets below. In general, and similarly to the other reviewer, I was able to install the R package, run the functions as expected, thought the package worked well and was well documented. Though this R Package has a very specific audience, it sounds like it will be an easy and helpful too for them. I share similar sentiments that the README could include more details and context and had the same errors with the test checks that the other reviewer had.
Thanks for the opportunity to review and let me know if you have any questions! This is my first time reviewing an R package for ROpenSci, so please let me know if there is anything I missed or forgot to cover. Good luck, and hope this helps! Thanks for making a package to help the folks of Manitoba!
- Readme could include more information about the institution, author (example), additional resources, the government legal (example 1, 2), and access constraints to this data (example). I've included links here to a repository I'm working on at NOAA for reference.
- The first reviewer made a great note about maintainer redundancy. Possibly related to or fixed by stating your affiliation (as I noted above), but sharing more about who you are and your/your affiliation's commitment to this package would help users know its priority for upkeep to maintainers and who might take over if you pass the package along to someone else to maintain.
- It may be worthwhile to choose a licence like the GNU General Public Licence v3.0 or MIT Licence for your work, rather than just the two "YEAR" and "COPYWRITE HOLDER" lines. They're fine, but its my understanding that the ones I mentioned are standard practice and are recommended at my organization.
- Cite the contributor guide (a
CONTRIBUTING.md) on your README. It took me a minute to find in your pkgdown site. It may be worthwhile to also add some other types of contributor guidelines, like those from repos we use at NOAA (pruely for reference). - Possibly add a summary map of Manitoba with all of the different areas to it, so users can get a sense for the breadth of what the R Package covers. As a user unfamiliar with Manitoba's quarter sections system, I had to make some assumptions about what "quarters" meant and how they were used (is it the same thing as or related to this?).
- Some of the bullets appear to be a bit messed up on this page. Also, I think the contents of this page could be added directly to a new or as a summary at the top of the existing vingette.
- The
quarters_dl()example seems to be a bit misprinted and I think would benefit from a . I think you want to use\dontrun{}like this:
#'@examples
#'\dontrun{
#'geocode("3817 Spruce St, Philadelphia, PA 19104")
#'geocode("Philadelphia, PA")
#'dat <- data.frame(value=runif(3),address=c("3817 Spruce St, Philadelphia, PA 19104","Philadelphia, PA","Neverneverland"))
#'geocode(dat)
#'}
- In general, there are a few sentences throughout the documentation that don't end with periods (".").
- I agree with the other reviewer's second comment. I'll add to that by noting: Specify the bounds and data type in the
search_coords()arguments examples. Perhaps something likeNumeric. Latitude (decimal degree) with resolution up to one hundred thousandth of a degree. Values outside of bounds will return error (49 to 59.5°N).I added the resolution and the "will return error" ideas in there, feel free to use or do something different. I used the general boundaries of manatoba here, for example. - In the
search_legalfunction, I would add a link to where a user can look up the legal land descriptions. - Add more information and a citation for the open data source you are using. The only place I found it listed was in the function file.
- In addition to the other reviewer's 5th comment, it would be great to include a section that 1) identifies work that has used this package and 2) create a vingette of a specific example with storyline using this package (e.g., "A farmer wants to know ..."). Some of the content provided in the ROpenSci application could be helpful for this.
- A package like this seems ripe for an R Shiny app - something that can be interactive for the non-coder. Just something to consider in a next stage of the package's development.
- Seconding the first reviewer's comment 6). I am also not familiar with the legal land descriptions in Manitoba, but the examples provided in the vignette worked well for me without any errors.
- The first reviewer made a great point to ask how often the package data will be upated. It would be good to note this in the documentation for users so they can anticipate future changes.
- See check run notes below. Specifically, I got two errors when I tried to run the package test:
A. "search_coord() returns dataframe"
q is a tibble(), not a dataframe
-- Error: search_coord() returns dataframe -------------------------------------
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
x
1. \-testthat::expect_equal(...)
2. \-testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. \-testthat:::waldo_compare(...)
4. \-waldo::compare(tolerance = NULL)
5. \-waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. \-waldo:::.stop_not_number(...)
7. \-waldo:::stop_input_type(...)
8. \-rlang::abort(message, ..., call = call, arg = arg)
Error:
! Test failed
Backtrace:
x
1. +-testthat::test_that(...)
2. | \-withr (local) `<fn>`()
3. \-reporter$stop_if_needed()
4. \-rlang::abort("Test failed", call = NULL)
B. "search_legal() returns dataframe
q is a tibble(), not a dataframe
-- Error: search_legal() returns dataframe -------------------------------------
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
x
1. \-testthat::expect_equal(...)
2. \-testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. \-testthat:::waldo_compare(...)
4. \-waldo::compare(tolerance = NULL)
5. \-waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. \-waldo:::.stop_not_number(...)
7. \-waldo:::stop_input_type(...)
8. \-rlang::abort(message, ..., call = call, arg = arg)
Error:
! Test failed
Backtrace:
x
1. +-testthat::test_that(...)
2. | \-withr (local) `<fn>`()
3. \-reporter$stop_if_needed()
4. \-rlang::abort("Test failed", call = NULL)
Check runs
R Session Info
sessionInfo()
R version 4.4.1 (2024-06-14 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 19045)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.utf8 LC_CTYPE=English_United States.utf8 LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C LC_TIME=English_United States.utf8
time zone: America/Los_Angeles
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] mbquartR_0.0.0.9000
loaded via a namespace (and not attached):
[1] miniUI_0.1.1.1 compiler_4.4.1 promises_1.3.2 Rcpp_1.0.13-1 rcmdcheck_1.4.0 callr_3.7.6 later_1.4.1
[8] fastmap_1.2.0 mime_0.12 R6_2.5.1 curl_6.0.1 htmlwidgets_1.6.4 tibble_3.2.1 desc_1.4.3
[15] profvis_0.4.0 rprojroot_2.0.4 shiny_1.9.1 pillar_1.9.0 rlang_1.1.4 utf8_1.2.4 cachem_1.1.0
[22] httpuv_1.6.15 fs_1.6.5 pkgload_1.4.0 memoise_2.0.1 cli_3.6.3 withr_3.0.2 magrittr_2.0.3
[29] ps_1.8.1 processx_3.8.4 digest_0.6.37 rstudioapi_0.17.1 xtable_1.8-4 remotes_2.5.0 devtools_2.4.5
[36] lifecycle_1.0.4 prettyunits_1.2.0 vctrs_0.6.5 glue_1.8.0 xopen_1.0.1 urlchecker_1.0.1 sessioninfo_1.2.2
[43] pkgbuild_1.4.5 fansi_1.0.6 purrr_1.0.2 tools_4.4.1 usethis_3.1.0 pkgconfig_2.0.3 ellipsis_0.3.2
[50] htmltools_0.5.8.1
Clean and install: success
==> Rcmd.exe INSTALL --preclean --no-multiarch --with-keep.source mbquartR
* installing to library 'C:/Users/emily.markowitz/AppData/Local/R/win-library/4.4'
* installing *source* package 'mbquartR' ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (mbquartR)
Devtools output: 1 error (from test checks)
devtools::check()
══ Documenting ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
ℹ Installed roxygen2 version (7.3.2) doesn't match required (7.3.1)
✖ `check()` will not re-document this package
══ Building ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Setting env vars:
• CFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXXFLAGS : -Wall -pedantic -fdiagnostics-color=always
• CXX11FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX14FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX17FLAGS: -Wall -pedantic -fdiagnostics-color=always
• CXX20FLAGS: -Wall -pedantic -fdiagnostics-color=always
── R CMD build ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✔ checking for file 'C:\Users\emily.markowitz\Work\projects\mbquartR/DESCRIPTION' (455ms)
─ preparing 'mbquartR':
✔ checking DESCRIPTION meta-information ...
─ installing the package to build vignettes
✔ creating vignettes (19.9s)
─ checking for LF line-endings in source and make files and shell scripts (1.2s)
─ checking for empty or unneeded directories
─ building 'mbquartR_0.0.0.9000.tar.gz'
══ Checking ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Setting env vars:
• _R_CHECK_CRAN_INCOMING_REMOTE_ : FALSE
• _R_CHECK_CRAN_INCOMING_ : FALSE
• _R_CHECK_FORCE_SUGGESTS_ : FALSE
• _R_CHECK_PACKAGES_USED_IGNORE_UNUSED_IMPORTS_: FALSE
• NOT_CRAN : true
── R CMD check ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─ using log directory 'C:/Users/emily.markowitz/AppData/Local/Temp/Rtmpy80E8v/file56a01c33567f/mbquartR.Rcheck' (505ms)
─ using R version 4.4.1 (2024-06-14 ucrt)
─ using platform: x86_64-w64-mingw32
─ R was compiled by
gcc.exe (GCC) 13.2.0
GNU Fortran (GCC) 13.2.0
─ running under: Windows 10 x64 (build 19045)
─ using session charset: UTF-8
─ using options '--no-manual --as-cran'
✔ checking for file 'mbquartR/DESCRIPTION'
─ this is package 'mbquartR' version '0.0.0.9000'
─ package encoding: UTF-8
✔ checking package namespace information
✔ checking package dependencies (1.6s)
✔ checking if this is a source package ...
✔ checking if there is a namespace
✔ checking for executable files (1.3s)
✔ checking for hidden files and directories ...
✔ checking for portable file names
✔ checking serialization versions
✔ checking whether package 'mbquartR' can be installed (6.2s)
✔ checking installed package size (461ms)
✔ checking package directory (570ms)
✔ checking for future file timestamps ...
✔ checking 'build' directory ...
✔ checking DESCRIPTION meta-information (730ms)
✔ checking top-level files
✔ checking for left-over files ...
✔ checking index information (458ms)
✔ checking package subdirectories (1.1s)
✔ checking code files for non-ASCII characters ...
✔ checking R files for syntax errors ...
✔ checking whether the package can be loaded (668ms)
✔ checking whether the package can be loaded with stated dependencies (440ms)
✔ checking whether the package can be unloaded cleanly (549ms)
✔ checking whether the namespace can be loaded with stated dependencies (449ms)
✔ checking whether the namespace can be unloaded cleanly (651ms)
✔ checking loading without being on the library search path (1s)
✔ checking whether startup messages can be suppressed (1.2s)
✔ checking dependencies in R code (7.3s)
✔ checking S3 generic/method consistency (661ms)
✔ checking replacement functions (549ms)
✔ checking foreign function calls (533ms)
✔ checking R code for possible problems (5.2s)
✔ checking Rd files (534ms)
✔ checking Rd metadata ...
✔ checking Rd line widths ...
✔ checking Rd cross-references (439ms)
✔ checking for missing documentation entries (551ms)
✔ checking for code/documentation mismatches (1.5s)
✔ checking Rd \usage sections (998ms)
✔ checking Rd contents ...
✔ checking for unstated dependencies in examples (339ms)
✔ checking contents of 'data' directory ...
✔ checking data for non-ASCII characters (406ms)
✔ checking LazyData
✔ checking data for ASCII and uncompressed saves (395ms)
✔ checking installed files from 'inst/doc' (539ms)
✔ checking files in 'vignettes' (599ms)
─ checking examples ... [36s] OK (36.6s)
Examples with CPU (user + system) or elapsed time > 5s
user system elapsed
map_quarter 32.34 2.39 24.92
search_coord 11.40 0.56 6.75
✔ checking for unstated dependencies in 'tests' ...
─ checking tests ...
Running the tests in 'tests/testthat.R' failed.
Last 13 lines of output:
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 1 | SKIP 0 | PASS 42 ]
Error: Test failures
Execution halted
✔ checking for unstated dependencies in vignettes (777ms)
✔ checking package vignettes ...
─ checking re-building of vignette outputs ... [16s] OK (16.1s)
✔ checking for non-standard things in the check directory
✔ checking for detritus in the temp directory
See
'C:/Users/emily.markowitz/AppData/Local/Temp/Rtmpy80E8v/file56a01c33567f/mbquartR.Rcheck/00check.log'
for details.
── R CMD check results ────────────────────────────────────────────────────────────────────────────────────────────────── mbquartR 0.0.0.9000 ────
Duration: 2m 50.7s
❯ checking tests ...
See below...
── Test failures ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── testthat ────
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> library(testthat)
> library(mbquartR)
>
> test_check("mbquartR")
[ FAIL 2 | WARN 1 | SKIP 0 | PASS 42 ]
══ Warnings ════════════════════════════════════════════════════════════════════
── Warning ('test-mapping.R:3:3'): map_quarter() returns a map ─────────────────
package 'mapview' was built under R version 4.4.2
Backtrace:
▆
1. └─base::library(mapview) at test-mapping.R:3:3
2. └─base (local) testRversion(pkgInfo, package, pkgpath)
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-search_coord.R:6:3'): search_coord() returns dataframe ─────────
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
── Error ('test-search_legal.R:6:3'): search_legal() returns dataframe ─────────
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 1 | SKIP 0 | PASS 42 ]
Error: Test failures
Execution halted
1 error ✖ | 0 warnings ✔ | 0 notes ✔
Test checks: 2 errors
devtools::test()
ℹ Testing mbquartR
✔ | F W S OK | Context
✔ | 22 | download [30.9s]
⠏ | 0 | mapping GDAL version >= 3.1.0 | setting mapviewOptions(fgb = TRUE)
✔ | 1 5 | mapping [10.2s]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Warning (test-mapping.R:3:3): map_quarter() returns a map
package 'mapview' was built under R version 4.4.2
Backtrace:
▆
1. └─base::library(mapview) at test-mapping.R:3:3
2. └─base (local) testRversion(pkgInfo, package, pkgpath)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✖ | 1 8 | search_coord [7.0s]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_coord.R:6:3): search_coord() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✖ | 1 7 | search_legal [8.6s]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_legal.R:6:3): search_legal() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
══ Results ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
Duration: 59.5 s
── Failed tests ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Error (test-search_coord.R:6:3): search_coord() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_coord.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
Error (test-search_legal.R:6:3): search_legal() returns dataframe
Error in `waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)`: `tolerance` must be a number or `NULL`, not `TRUE`.
Backtrace:
▆
1. └─testthat::expect_equal(...) at test-search_legal.R:6:3
2. └─testthat:::expect_waldo_equal("equal", act, exp, info, ..., tolerance = tolerance)
3. └─testthat:::waldo_compare(...)
4. └─waldo::compare(tolerance = NULL)
5. └─waldo:::check_number_decimal(tolerance, allow_null = TRUE, min = 0)
6. └─waldo:::.stop_not_number(...)
7. └─waldo:::stop_input_type(...)
8. └─rlang::abort(message, ..., call = call, arg = arg)
[ FAIL 2 | WARN 1 | SKIP 0 | PASS 42 ]
@sheilasaia and @EmilyMarkowitz-NOAA Thank you so much for your reviews! You are all set for now, but once @alex-koiter responds I will ask you to take a look at those responses and let me know if your comments were adequately addressed. Also, keep a rough tally of the time you spent on the review and follow-ups. We like to keep track of this.
@alex-koiter Please take a look at these reviews, ask any questions that arise, and work on the revisions.
If there is anything I can do to help, just let me know.
Thanks again all!
Thanks to @sheilasaia and @EmilyMarkowitz-NOAA for taking the time to review my package. Some good suggestions to implement. I will start working on this and if I have any questions or need clarification I will let you know.
@jhollist I am also interested in submitting to JOSS. I know there is an opportunity to combine the rOpenSci review with the JOSS review process, is there anything in particular I should be aware of moving forward. I am currently preparing the paper.
@alex-koiter I am not sure about the details on JOSS submission. let me dig and get back to you.
@alex-koiter A bit here on it: https://devguide.ropensci.org/softwarereview_author.html#preparing-for-submission.
I think we keep on with the track we are going on. The JOSS side will happen after rOpenSci review. The current EiC may coordinate this process. I will find out.
In short, JOSS will make their own determination on scope and if it is in scope you will submit your paper.md for review with JOSS. The package will not need a separate review.
@alex-koiter It looks like all you will need to do is specify that the package been reviewed by rOpenSci during the pre-submisison phase with JOSS. Here is an example issue: https://github.com/openjournals/joss-reviews/issues/6163#issuecomment-1888111491