Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Download and Parse Public Data Released by B3 Exchange #534

Closed
13 of 29 tasks
msperlin opened this issue May 11, 2022 · 101 comments
Closed
13 of 29 tasks

Download and Parse Public Data Released by B3 Exchange #534

msperlin opened this issue May 11, 2022 · 101 comments
Assignees

Comments

@msperlin
Copy link

msperlin commented May 11, 2022

Date accepted: 2023-02-08

Submitting Author Name: Marcelo S. Perlin
Submitting Author Github Handle: @msperlin
Other Package Authors Github handles: (comma separated, delete if none) @wilsonfreitas
Repository: https://github.com/wilsonfreitas/rb3
Version submitted: 0.0.3
Submission type: Standard
Editor: @emilyriederer
Reviewers: @pachadotdev, @quishqa

Due date for @pachadotdev: 2022-10-16

Due date for @quishqa: 2022-10-24
Archive: TBD
Version accepted: TBD
Language: en

  • Paste the full DESCRIPTION file inside a code block below:
Package: rb3
Title: Download and Parse Public Data Released by B3 Exchange
Description: Download and parse public files released by B3 and convert them
    into useful formats and data structures common to data analysis
    practitioners.
Version: 0.0.3
Authors@R: c(person("Wilson", "Freitas",
                    email = "wilson.freitas@gmail.com",
                    role = c("aut", "cre")),
             person("Marcelo", "Perlin",
                    email = "marceloperlin@gmail.com",
                    role = "aut"))
License: MIT + file LICENSE
LazyData: true
Depends:
    R (>= 4.1.0),
Imports:
    bizdays,
    stringr,
    proto,
    cli,
    readr,
    dplyr,
    rvest,
    httr,
    jsonlite,
    purrr,
    ascii,
    rlang,
    methods,
    yaml,
    digest,
    base64enc
Suggests:
    testthat,
    knitr,
    DT,
    miniUI,
    shiny,
    xtable,
    rmarkdown,
    ggplot2,
    covr,
    scales,
    magrittr,
    tibble,
    tidyr,
    fixedincome
Collate:
    'rb3-package.R'
    'util.R'
    'transmute.R'
    'fields.R'
    'handlers.R'
    'marketdata.R'
    'download-data.R'
    'file.R'
    'convert_to.R'
    'scraper-cdi.R'
    'scraper-futures.R'
    'scraper-yc.R'
    'scraper-cotahist.R'
    'addin-show-templates.R'
    'addin-display-template.R'
    'readers.R'
    'downloaders.R'
    'zzz.R'
BugReports: https://github.com/wilsonfreitas/rb3/issues
URL: https://github.com/wilsonfreitas/rb3,
    http://wilsonfreitas.github.io/rb3/
VignetteBuilder: knitr
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.2
Config/testthat/edition: 3
Encoding: UTF-8

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.):

    • data retrieval
    • 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):

The package downloads and organizes raw financial data directly from B3, the main financial exchange in Brazil. These datasets are not available in any other way.

  • Who is the target audience and what are scientific applications of this package?

Academic researchers and practioners of financial markets.

No.

Yes.

  • 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.

  • Explain reasons for any pkgcheck items which your package is unable to pass.

Technical checks

Confirm each of the following by checking the box.

This package:

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

@ropensci-review-bot
Copy link
Collaborator

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

@ropensci-review-bot
Copy link
Collaborator

Error (500). The editorcheck service is currently unavailable

@msperlin
Copy link
Author

@wilsonfreitas

@ropensci-review-bot
Copy link
Collaborator

ropensci-review-bot commented May 11, 2022

Checks for rb3 (v0.0.3)

git hash: cbb35b8a

  • ✔️ Package is already on CRAN.
  • ✖️ does not have a 'codemeta.json' file.
  • ✖️ does not have a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✖️ These functions do not have examples: [display_template, rb3, show_templates].
  • ✖️ Package uses global assignment operator ('<<-').
  • ✔️ Package has continuous integration checks.
  • ✖️ Package coverage is 74.6% (should be at least 75%).
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

Important: All failing checks above must be addressed prior to proceeding

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 231
internal rb3 174
internal stats 26
internal utils 19
internal graphics 15
imports methods 14
imports httr 9
imports purrr 9
imports stringr 7
imports jsonlite 5
imports bizdays 4
imports proto 4
imports rvest 4
imports dplyr 3
imports readr 2
imports ascii 1
imports digest 1
imports base64enc 1
imports cli NA
imports rlang NA
imports yaml NA
suggests shiny 9
suggests miniUI 2
suggests testthat NA
suggests knitr NA
suggests DT NA
suggests xtable NA
suggests rmarkdown NA
suggests ggplot2 NA
suggests covr NA
suggests scales NA
suggests magrittr NA
suggests tibble NA
suggests tidyr NA
suggests fixedincome 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

list (40), class (16), for (10), if (10), c (9), lapply (9), format (8), is.null (7), names (7), url (7), attr (6), F (6), length (6), as.Date (5), colnames (5), do.call (5), paste0 (4), structure (4), UseMethod (4), by (3), file.path (3), readLines (3), seq (3), as.data.frame (2), as.integer (2), body (2), match (2), options (2), parent.frame (2), Reduce (2), seq_along (2), sign (2), strptime (2), sub (2), sum (2), Sys.Date (2), table (2), try (2), as.character (1), as.numeric (1), as.POSIXct (1), basename (1), charToRaw (1), data.frame (1), dim (1), environment (1), evalq (1), exists (1), get (1), gsub (1), missing (1), order (1), print (1), rbind (1), rep (1), strftime (1), switch (1), t (1), tempdir (1)

rb3

handler (30), fields (11), server (6), download_data (5), width (5), composite (4), match_regex (4), retrieve_template (4), transmuter (4), get (3), query_cdi (3), read_fwf (3), read_marketdata (3), take (3), cachedir (2), code2month (2), fields_description (2), fields_handlers (2), fields_names (2), fields_widths (2), flatten_names (2), iter_rules (2), pass_thru_handler (2), rule_result (2), show_templates (2), unformat (2), apply_rule (1), apply_rule.class_rule (1), apply_rule.predicate_rule (1), apply_rule.regex_rule (1), as_dbl (1), as.data.frame.fields (1), cdi_get (1), clearcache (1), convert_to (1), cotahist_bdrs_get (1), cotahist_equity_get (1), cotahist_equity_options_get (1), cotahist_funds_get (1), cotahist_funds_options_get (1), cotahist_get (1), cotahist_index_options_get (1), cotahist_indexes_get (1), cotahist_units_get (1), cotahist_units_options_get (1), csv_read_file (1), curve_download (1), curve_read (1), datetime_download (1), display_template (1), field (1), fields_description.fields (1), fields_handlers.fields (1), fields_names.fields (1), fields_widths.fields (1), filter_equity_data (1), format_equity (1), format_options (1), futures_get (1), futures_mget (1), fwf_read_file (1), get_single_yc (1), idi_get (1), json_read_file (1), just_download_data (1), keys (1), match_class (1), match_predicate (1), maturity2date (1), mcsv_read_file (1), mfwf_read_file (1), new_field (1), new_part (1), options_open_interest_read (1), parse_columns (1), print.fields (1), print.parts (1), put (1), register (1), save_resource (1), settlement_prices_download (1), settlement_prices_read (1), simple_download (1), single_futures_get (1), stock_indexes_composition_download (1), stock_indexes_composition_reader (1), to_dbl (1), unzip_recursive (1)

stats

df (25), pt (1)

utils

data (15), read.table (2), methods (1), unzip (1)

graphics

text (10), lines (5)

methods

setGeneric (4), as (3), is (3), representation (2), initialize (1), setRefClass (1)

httr

content (3), GET (3), parse_url (2), POST (1)

purrr

map_chr (5), map_lgl (3), map_int (1)

shiny

dialogViewer (4), runGadget (2), shinyApp (2), h3 (1)

stringr

str_replace (2), str_sub (2), str_detect (1), str_match (1), str_pad (1)

jsonlite

fromJSON (3), toJSON (2)

bizdays

bizseq (2), add.bizdays (1), bizdayse (1)

proto

proto (4)

rvest

read_html (2), html_element (1), html_table (1)

dplyr

bind_rows (2), tibble (1)

miniUI

miniPage (2)

readr

read_file (1), read_rds (1)

ascii

ascii (1)

base64enc

base64encode (1)

digest

digest (1)


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 18 files) and
  • 2 authors
  • 2 vignettes
  • no internal data file
  • 16 imported packages
  • 25 exported functions (median 4 lines of code)
  • 200 non-exported functions in R (median 9 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 18 78.3
files_vignettes 2 85.7
files_tests 18 95.7
loc_R 1345 75.6
loc_vignettes 203 50.1
loc_tests 276 62.4
num_vignettes 2 89.2
n_fns_r 225 91.3
n_fns_r_exported 25 73.6
n_fns_r_not_exported 200 93.2
n_fns_per_file_r 7 78.2
num_params_per_fn 1 1.6 TRUE
loc_per_fn_r 8 20.0
loc_per_fn_r_exp 4 4.3 TRUE
loc_per_fn_r_not_exp 9 27.1
rel_whitespace_R 12 66.1
rel_whitespace_vignettes 17 26.9
rel_whitespace_tests 30 68.1
doclines_per_fn_exp 42 52.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 134 83.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 and other checks (click to open)

3a. Continuous Integration Badges

R-CMD-check

GitHub Workflow Results

id name conclusion sha run_number date
2306339093 pages build and deployment success 38384b 33 2022-05-11
2306316808 pkgdown success cbb35b 36 2022-05-11
2306316813 R-CMD-check success cbb35b 54 2022-05-11
2306316802 test-coverage success cbb35b 54 2022-05-11

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fail:

  1. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 74.58

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 3 potential issues:

message number of times
Lines should not be more than 80 characters. 3


Package Versions

package version
pkgstats 0.0.4.30
pkgcheck 0.0.3.19


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with ✖️ have been resolved.

@mpadge
Copy link
Member

mpadge commented May 11, 2022

@msperlin The build failure in the checks above is because

Error: 'load_builtin_calendars' is not an exported object from 'namespace:bizdays'

That generally means you're not locally using latest versions of all dependency packages. Please let us know when you've fixed that, and the other issues identified above. Thanks.


Edit: I see that it was actually our system which needed updating to the new bizdays released yesterday on CRAN. Checks have been updated accordingly.

@emilyriederer
Copy link

emilyriederer commented May 12, 2022

Hello @msperlin and many thanks for your submission.

We are discussing whether the package is in scope and need a bit more information.

I see you are the author of other packages such as GetDFDData2 already on CRAN. Could you please help to clarify the differences between these two packages? Is the former focused only on financial statements whereas this package provides more granular time series? While I'm sure your two packages are not "competing", I want to fully understand what makes this package novel and how it is best in class.

Similarly, I see a B3 data listed on general services like Yahoo Finance which I know can be accessed through a number of packages including yfR, quantmod, and tidyquant. Could you elaborate on why none of these packages are in a "comparison set"?

Thank you!

@msperlin
Copy link
Author

Hi @emilyriederer

Please find my replies below:

I see you are the author of other packages such as GetDFDData2 already on CRAN. Could you please help to clarify the differences between these two packages? Is the former focused only on financial statements whereas this package provides more granular time series? While I'm sure your two packages are not "competing", I want to fully understand what makes this package novel and how it is best in class.

The different between GetDFPDAta2 and rb3 is in their scope and audience. Package GetDFPData2 is related to financial documents released by companies to the exchange and its audience is mostly business analysts. This includes sales, profit, and many other financial information on a annual basis. Meanwhile, you cant think of rb3 as an interface to all trade data available at the b3 website, including prices of many different type of contracts such as options, equities (companies) and futures. ITs audience is more related to traders and market participants.

While there is some relationship between datasets from rb3 (stock prices) and GetDFPData2 (financial statements) for equities, there is none for other types of markets.

Similarly, I see a B3 data listed on general services like Yahoo Finance which I know can be accessed through a number of packages including yfR, quantmod, and tidyquant. Could you elaborate on why none of these packages are in a "comparison set"?

The data is indeed simillar, but only for equities (companies). Yahoo finance, for example, does not provide historical prices for futures or option contracts. Package rb3 also provides access to historical yield curves, which is a very unique (and rare) set of data in finance.

@msperlin
Copy link
Author

@wilsonfreitas I just fixed the code for codemeta and contributing file. The other problems are deeper in the code. Can you please have a look?

@wilsonfreitas
Copy link

wilsonfreitas commented May 13, 2022

Hi @emilyriederer and @msperlin

I added the examples to the functions show_templates and display_templates.
rb3 is not a function, it is just the tag @name being used in the package documentantion, I changed that.

And with respect to <<- operator, it is used with a ReferenceClass, and accoding to documentation this is the suggest way to modify objects fields.
So, I believe that this is not an issue.

@wilsonfreitas
Copy link

Furtherly, the test coverage is now 84%.

@mpadge
Copy link
Member

mpadge commented May 13, 2022

Thanks @wilsonfreitas, our check system has just been updated to do what above link says: Allow global assignment operator if in RefClass statement. Your package no longer fails that check 👍

And FYI, another new check has just been added which in your case reports this:


4. Other Checks

✖️ The following function name is duplicated in other packages:

    • download_data from admixr, FedData, fgeo.x, fHMM, hkdatasets, pRecipe, Rnumerai

That's currently a "trial" function so you don't necessarily need to respond, but feel free to change the name if you want.

@wilsonfreitas
Copy link

Hi @mpadge

Thanks @wilsonfreitas, our check system has just been updated to do what above link says: Allow global assignment operator if in RefClass statement. Your package no longer fails that check 👍

This is great!


  • download_data has been renamed to download_marketdata.

@emilyriederer
Copy link

@ropensci-review-bot check package

@ropensci-review-bot
Copy link
Collaborator

Thanks, about to send the query.

@ropensci-review-bot
Copy link
Collaborator

🚀

Editor check started

👋

@ropensci-review-bot
Copy link
Collaborator

Checks for rb3 (v0.0.3)

git hash: e7aa4be0

  • ✔️ Package is already on CRAN.
  • ✔️ has a 'codemeta.json' file.
  • ✔️ has a 'contributing' file.
  • ✔️ uses 'roxygen2'.
  • ✔️ 'DESCRIPTION' has a URL field.
  • ✔️ 'DESCRIPTION' has a BugReports field.
  • ✔️ Package has at least one HTML vignette
  • ✖️ These functions do not have examples: [rb3-package].
  • ✔️ Package has continuous integration checks.
  • ✔️ Package coverage is 85.3%.
  • ✔️ R CMD check found no errors.
  • ✔️ R CMD check found no warnings.

Important: All failing checks above must be addressed prior to proceeding

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 229
internal rb3 170
internal stats 26
internal utils 19
internal graphics 15
imports methods 14
imports httr 9
imports purrr 9
imports stringr 7
imports jsonlite 5
imports bizdays 4
imports proto 4
imports rvest 4
imports dplyr 3
imports readr 2
imports ascii 1
imports digest 1
imports base64enc 1
imports cli NA
imports rlang NA
imports yaml NA
suggests shiny 9
suggests miniUI 2
suggests testthat NA
suggests knitr NA
suggests DT NA
suggests xtable NA
suggests rmarkdown NA
suggests ggplot2 NA
suggests covr NA
suggests scales NA
suggests magrittr NA
suggests tibble NA
suggests tidyr NA
suggests fixedincome 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

list (40), class (16), for (10), if (10), c (9), lapply (9), format (8), is.null (7), names (7), url (7), attr (6), F (6), length (6), as.Date (5), colnames (5), do.call (5), paste0 (4), structure (4), by (3), file.path (3), readLines (3), seq (3), seq_along (3), as.data.frame (2), as.integer (2), body (2), match (2), options (2), parent.frame (2), Reduce (2), sign (2), strptime (2), sub (2), sum (2), Sys.Date (2), table (2), try (2), as.character (1), as.numeric (1), as.POSIXct (1), basename (1), charToRaw (1), data.frame (1), dim (1), environment (1), evalq (1), exists (1), get (1), gsub (1), missing (1), order (1), print (1), rbind (1), rep (1), row.names (1), strftime (1), switch (1), t (1), tempdir (1)

rb3

handler (30), fields (11), server (6), download_marketdata (5), width (5), composite (4), match_regex (4), retrieve_template (4), transmuter (4), get (3), query_cdi (3), read_fwf (3), read_marketdata (3), take (3), cachedir (2), code2month (2), fields_description (2), fields_handlers (2), fields_names (2), fields_widths (2), flatten_names (2), iter_rules (2), pass_thru_handler (2), rule_result (2), show_templates (2), unformat (2), apply_rule (1), apply_rule.class_rule (1), apply_rule.predicate_rule (1), apply_rule.regex_rule (1), as_dbl (1), as.data.frame.fields (1), cdi_get (1), clearcache (1), convert_to (1), cotahist_bdrs_get (1), cotahist_equity_get (1), cotahist_equity_options_get (1), cotahist_funds_get (1), cotahist_funds_options_get (1), cotahist_get (1), cotahist_index_options_get (1), cotahist_indexes_get (1), cotahist_units_get (1), cotahist_units_options_get (1), csv_read_file (1), curve_download (1), curve_read (1), datetime_download (1), display_template (1), field (1), filter_equity_data (1), format_equity (1), format_options (1), futures_get (1), futures_mget (1), fwf_read_file (1), get_single_yc (1), idi_get (1), json_read_file (1), just_download_data (1), keys (1), match_class (1), match_predicate (1), maturity2date (1), mcsv_read_file (1), mfwf_read_file (1), new_field (1), new_part (1), options_open_interest_read (1), parse_columns (1), print.fields (1), print.parts (1), put (1), register (1), save_resource (1), settlement_prices_download (1), settlement_prices_read (1), simple_download (1), single_futures_get (1), stock_indexes_composition_download (1), stock_indexes_composition_reader (1), to_dbl (1), unzip_recursive (1)

stats

df (25), pt (1)

utils

data (15), read.table (2), methods (1), unzip (1)

graphics

text (10), lines (5)

methods

setGeneric (4), as (3), is (3), representation (2), initialize (1), setRefClass (1)

httr

content (3), GET (3), parse_url (2), POST (1)

purrr

map_chr (5), map_lgl (3), map_int (1)

shiny

dialogViewer (4), runGadget (2), shinyApp (2), h3 (1)

stringr

str_replace (2), str_sub (2), str_detect (1), str_match (1), str_pad (1)

jsonlite

fromJSON (3), toJSON (2)

bizdays

bizseq (2), add.bizdays (1), bizdayse (1)

proto

proto (4)

rvest

read_html (2), html_element (1), html_table (1)

dplyr

bind_rows (2), tibble (1)

miniUI

miniPage (2)

readr

read_file (1), read_rds (1)

ascii

ascii (1)

base64enc

base64encode (1)

digest

digest (1)


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 18 files) and
  • 2 authors
  • 2 vignettes
  • no internal data file
  • 16 imported packages
  • 25 exported functions (median 4 lines of code)
  • 192 non-exported functions in R (median 9 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 18 78.3
files_vignettes 2 85.7
files_tests 20 96.3
loc_R 1342 75.6
loc_vignettes 203 50.1
loc_tests 612 78.8
num_vignettes 2 89.2
n_fns_r 217 90.9
n_fns_r_exported 25 73.6
n_fns_r_not_exported 192 92.9
n_fns_per_file_r 7 77.8
num_params_per_fn 1 1.6 TRUE
loc_per_fn_r 9 24.3
loc_per_fn_r_exp 4 4.3 TRUE
loc_per_fn_r_not_exp 9 27.1
rel_whitespace_R 12 65.3
rel_whitespace_vignettes 17 26.9
rel_whitespace_tests 21 77.6
doclines_per_fn_exp 42 52.8
doclines_per_fn_not_exp 0 0.0 TRUE
fn_call_network_size 134 83.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 and other checks (click to open)

3a. Continuous Integration Badges

R-CMD-check

GitHub Workflow Results

id name conclusion sha run_number date
2319766131 pages build and deployment success 452491 41 2022-05-13
2319747523 pkgdown success e7aa4b 44 2022-05-13
2319747525 R-CMD-check success e7aa4b 63 2022-05-13
2319747522 test-coverage success e7aa4b 63 2022-05-13

3b. goodpractice results

R CMD check with rcmdcheck

R CMD check generated the following check_fail:

  1. no_import_package_as_a_whole

Test coverage with covr

Package coverage: 85.34

Cyclocomplexity with cyclocomp

No functions have cyclocomplexity >= 15

Static code analyses with lintr

lintr found the following 11 potential issues:

message number of times
Avoid using sapply, consider vapply instead, that's type safe 3
Lines should not be more than 80 characters. 8


Package Versions

package version
pkgstats 0.0.4.30
pkgcheck 0.0.3.19


Editor-in-Chief Instructions:

Processing may not proceed until the items marked with ✖️ have been resolved.

@emilyriederer
Copy link

Thanks for the answers on the package uniqueness, @msperlin . I really appreciate the additional context on the package's unique value. I will proceed to look for editors for this package. Would you mind adding more details and context to the README? After reading it someone with little domain knowledge should have been informed about the aim, goals and functionality of the package.

@msperlin
Copy link
Author

Thanks @emilyriederer. I added to the README.md the explicit datasets available at rb3. This should give context to the reader and set rb3 apart from other packages.

@emilyriederer
Copy link

Hello again, @msperlin !

Thanks for updating the README.

I noticed that you are also currently going through active review for yfR (#523) right now. Discussing with the editorial board, we think the best policy is for developers to undertake reviews sequentially. That way, any relevant feedback or discussions from one review can be applied more seamlessly to the next.

As such, I am going to apply the hold tag for now. Once #523 is complete, please ping me in this thread and we will pick back up where we left off.

@msperlin
Copy link
Author

No problem @emilyriederer. Makes sense to me.
I'll get back here once yfR finishes its review (probably in a month from now).

@maelle
Copy link
Member

maelle commented May 30, 2022

@ropensci-review-bot put on hold

@ropensci-review-bot
Copy link
Collaborator

Submission on hold!

@ropensci-review-bot
Copy link
Collaborator

@maelle: Please review the holding status

@maelle
Copy link
Member

maelle commented Aug 29, 2022

@msperlin do you still intend to submit this package?

@msperlin
Copy link
Author

Hi @maelle,

@wilsonfreitas is the main author of the package and has done far more work on the code than myself. I believe the decision should be his.

@emilyriederer
Copy link

Hi there @pachadotdev and @quishqa ! Could you please take a look an @wilsonfreitas 's changes and complete the approval template? Thank you!

@emilyriederer
Copy link

Hi @pachadotdev and @quishqa - happy new year! I know my last message might have been poorly timed around the holidays. Would you have time soon to do a final review and approval of @wilsonfreitas 's updates? Thank you!

@quishqa
Copy link

quishqa commented Jan 19, 2023

Hi all!
I believe the commits addressed my suggestions, but it seems that R-CMD-Check is failing.

@wilsonfreitas
Copy link

wilsonfreitas commented Jan 20, 2023

Hi @quishqa, thanks for your reply.
I forgot to update the GitHub workflows.
The bizdays package has also been updated, and it is a dependency.
It's submitted to CRAN, I'll wait until it's approved to rerun the workflows.

@pachadotdev
Copy link

Hi @pachadotdev and @quishqa - happy new year! I know my last message might have been poorly timed around the holidays. Would you have time soon to do a final review and approval of @wilsonfreitas 's updates? Thank you!

hi!
looks good!

@emilyriederer
Copy link

Thanks for checking in @quishqa and @pachadotdev ! Once @wilsonfreitas has the checks back, can you both please formally sign off with the template?

@wilsonfreitas
Copy link

Hi @pachadotdev and @quishqa, all RMD checks are passing.

@quishqa
Copy link

quishqa commented Jan 25, 2023

Thanks for checking in @quishqa and @pachadotdev ! Once @wilsonfreitas has the checks back, can you both please formally sign off with the template?

Hi @emilyriederer
Just to double-check this is the template, right?

@emilyriederer
Copy link

@quishqa - Yes, perfect! Thanks. (cc-ing @pachadotdev as well)

@quishqa
Copy link

quishqa commented Feb 1, 2023

Reviewer Response

Final approval (post-review)

  • The author has responded to my review and made changes to my satisfaction. I recommend approving this package.

Estimated hours spent reviewing: 7

@pachadotdev
Copy link

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.
  • 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:

  • A statement of need: clearly stating problems the software is designed to solve and its target audience in README
  • Installation instructions: for the development version of package and any non-standard dependencies in README
  • Vignette(s): demonstrating major functionality that runs successfully locally
  • Function Documentation: for all exported functions
  • Examples: (that run successfully locally) for all exported functions
  • Community guidelines: including contribution guidelines in the README or CONTRIBUTING, and DESCRIPTION with URL, BugReports and Maintainer (which may be autogenerated via Authors@R).

Functionality

  • Installation: Installation succeeds as documented.
  • Functionality: Any functional claims of the software been confirmed.
  • Performance: Any performance claims of the software 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.

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.

Review Comments

Good!

@emilyriederer
Copy link

@ropensci-review-bot approve rb3

@ropensci-review-bot
Copy link
Collaborator

Approved! Thanks @msperlin for submitting and @pachadotdev, @quishqa for your reviews! 😁

To-dos:

  • Transfer the repo to rOpenSci's "ropensci" GitHub organization under "Settings" in your repo. I have invited you to a team that should allow you to do so. You will need to enable two-factor authentication for your GitHub account.
    This invitation will expire after one week. If it happens write a comment @ropensci-review-bot invite me to ropensci/<package-name> which will re-send an invitation.
  • After transfer write a comment @ropensci-review-bot finalize transfer of <package-name> where <package-name> is the repo/package name. This will give you admin access back.
  • Fix all links to the GitHub repo to point to the repo under the ropensci organization.
  • Delete your current code of conduct file if you had one since rOpenSci's default one will apply, see https://devguide.ropensci.org/collaboration.html#coc-file
  • If you already had a pkgdown website and are ok relying only on rOpenSci central docs building and branding,
    • deactivate the automatic deployment you might have set up
    • remove styling tweaks from your pkgdown config but keep that config file
    • replace the whole current pkgdown website with a redirecting page
    • replace your package docs URL with https://docs.ropensci.org/package_name
    • In addition, in your DESCRIPTION file, include the docs link in the URL field alongside the link to the GitHub repository, e.g.: URL: https://docs.ropensci.org/foobar, https://github.com/ropensci/foobar
  • Skim the docs of the pkgdown automatic deployment, in particular if your website needs MathJax.
  • Fix any links in badges for CI and coverage to point to the new repository URL.
  • Increment the package version to reflect the changes you made during review. In NEWS.md, add a heading for the new version and one bullet for each user-facing change, and each developer-facing change that you think is relevant.
  • We're starting to roll out software metadata files to all rOpenSci packages via the Codemeta initiative, see https://docs.ropensci.org/codemetar/ for how to include it in your package, after installing the package - should be easy as running codemetar::write_codemeta() in the root of your package.
  • You can add this installation method to your package README install.packages("<package-name>", repos = "https://ropensci.r-universe.dev") thanks to R-universe.

Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent).

Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions.

We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.

Last but not least, you can volunteer as a reviewer via filling a short form.

@emilyriederer
Copy link

Congratulations, @wilsonfreitas ! Yuur package has been approved. There's a lot of great information above about how you can fully transfer the package to rOpenSci and some (optional) ideas for marketing.

Would you also be interested in writing a blog post about your package? I think it's always great to feature new data packages in posts since it can raise awareness both for the package and for new underlying APIs that folks may not know about. Additionally, I think there are a lot of synergies between this package and other @msperlin and @pachadotdev submissions, so we could even explore those interactions. If so, @ropensci/blog-editors can provide more detail.

@maelle
Copy link
Member

maelle commented Feb 14, 2023

@wilsonfreitas @msperlin did you meet any difficulty? I'm asking as I'm drafting rOpenSci newsletter I'll send on Friday: if your package is transferred by then, it will be mentioned in this month's newsletter (if not, in next month's so no worries).

@msperlin
Copy link
Author

Thanks @maelle. I belive only @wilsonfreitas can change the ownership of the repository.

@wilsonfreitas
Copy link

@ropensci-review-bot invite me to ropensci/rb3

@wilsonfreitas
Copy link

hi @emilyriederer

I am trying to transfer the repo to ropensci, but I don't have the permission.

image

Am I doing it correctly?

@maelle
Copy link
Member

maelle commented Feb 17, 2023

@wilsonfreitas I've now invited you to the GitHub organization, can you please try again?

I've just realized this submission is a scenario we hadn't thought of: the submitter @msperlin didn't own the repository, and we send the organization invitation to the submitter. 😅 Sorry about the resulting clunkiness!

@maelle
Copy link
Member

maelle commented Feb 17, 2023

In the end the repo was transferred riiight before I sent the newsletter (in a few minutes), well done 🏆 😉

@wilsonfreitas
Copy link

@ropensci-review-bot finalize transfer of ropensci/rb3

@ropensci-review-bot
Copy link
Collaborator

Could not finalize transfer: Could not add owner rights to the ropensci/rb3 team

@maelle
Copy link
Member

maelle commented Feb 17, 2023

@wilsonfreitas @msperlin you're now both part of a team with admin access to the repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants