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

R-package #208

Merged
merged 33 commits into from
Aug 17, 2018
Merged

R-package #208

merged 33 commits into from
Aug 17, 2018

Conversation

mlampros
Copy link
Collaborator

This pull request is the continuation of the #165 issue.

@StrikerRUS
Copy link
Member

@mlampros Thanks!

But please don't add a git submodule. In #166 we rejected this approach. Make "real" copy-paste of the whole code.

@mlampros
Copy link
Collaborator Author

@StrikerRUS now that I've added the git sub module any suggestions? I can't extract any info from the #166 on what should be done.

@StrikerRUS
Copy link
Member

So, git created submodule automatically?.. You've just copy-pasted your repo in the new folder, right?

@mlampros
Copy link
Collaborator Author

mlampros commented Jul 27, 2018

yes that's correct I just copy-pasted the repo. Detailed : I did the fork, then clone locally, I copy-pasted my repo to the fork and I pushed the fork to my Github account, then I did the pull request.

@StrikerRUS
Copy link
Member

As you can see this resulted in creating the submodule: https://github.com/RGF-team/rgf/pull/208/files

I didn't expect this...

Please try the following: navigate to the R-package folder, and remove hidden folder .git. After that commit the changes.

@mlampros
Copy link
Collaborator Author

@StrikerRUS any idea how this can be done. I removed the .git folder locally then I pushed the changes however I receive,

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

@StrikerRUS
Copy link
Member

StrikerRUS commented Jul 27, 2018

Hmm...

What gives git status?

Maybe this can help?

git rm --cached submodule_path # delete reference to submodule HEAD (no trailing slash)
git rm --cached R-package
from here https://stackoverflow.com/a/1789374

UPD:

Also, please remove RGF subfolder: rgf/R-package/RGF/<content> -> rgf/R-package/<content>

@StrikerRUS
Copy link
Member

StrikerRUS commented Jul 27, 2018

I managed to add R-package without submoduling:

$ D:\Users\nekit\Downloads>git clone git@github.com:RGF-team/rgf.git
Cloning into 'rgf'...
remote: Counting objects: 1972, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 1972 (delta 6), reused 5 (delta 1), pack-reused 1951
Receiving objects: 100% (1972/1972), 4.99 MiB | 1.85 MiB/s, done.
Resolving deltas: 100% (1104/1104), done.

$ D:\Users\nekit\Downloads>git clone git@github.com:mlampros/RGF.git R-RGF
Cloning into 'R-RGF'...
remote: Counting objects: 179, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 179 (delta 8), reused 19 (delta 6), pack-reused 152
Receiving objects: 100% (179/179), 84.45 KiB | 554.00 KiB/s, done.
Resolving deltas: 100% (46/46), done.

$ D:\Users\nekit\Downloads>cd rgf

$ D:\Users\nekit\Downloads\rgf>mkdir R-package

$ <copy all content of ../R-RGF folder (your repo) into ./R-package folder>

$ D:\Users\nekit\Downloads\rgf>git status
On branch master
Your branch is up-to-date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        R-package/

nothing added to commit but untracked files present (use "git add" to track)

$ D:\Users\nekit\Downloads\rgf>git add *

$ D:\Users\nekit\Downloads\rgf>git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   R-package/.Rbuildignore
        new file:   R-package/.gitignore
        new file:   R-package/.travis.yml
        new file:   R-package/DESCRIPTION
        new file:   R-package/LICENSE
        new file:   R-package/LICENSE.note
        new file:   R-package/NAMESPACE
        new file:   R-package/NEWS.md
        new file:   R-package/R/package.R
        new file:   R-package/R/utils.R
        new file:   R-package/R/zzz.R
        new file:   R-package/README.md
        new file:   R-package/man/FastRGF_Classifier.Rd
        new file:   R-package/man/FastRGF_Regressor.Rd
        new file:   R-package/man/Internal_class.Rd
        new file:   R-package/man/RGF_Classifier.Rd
        new file:   R-package/man/RGF_Regressor.Rd
        new file:   R-package/man/RGF_cleanup_temp_files.Rd
        new file:   R-package/man/TO_scipy_sparse.Rd
        new file:   R-package/man/mat_2scipy_sparse.Rd
        new file:   R-package/tests/testthat.R
        new file:   R-package/tests/testthat/test_package.R
        new file:   R-package/vignettes/the_RGF_package.Rmd


$ D:\Users\nekit\Downloads\rgf>git commit -m"added R-package"
[master 51eac09] added R-package
 23 files changed, 3290 insertions(+)
 create mode 100644 R-package/.Rbuildignore
 create mode 100644 R-package/.gitignore
 create mode 100644 R-package/.travis.yml
 create mode 100644 R-package/DESCRIPTION
 create mode 100644 R-package/LICENSE
 create mode 100644 R-package/LICENSE.note
 create mode 100644 R-package/NAMESPACE
 create mode 100644 R-package/NEWS.md
 create mode 100644 R-package/R/package.R
 create mode 100644 R-package/R/utils.R
 create mode 100644 R-package/R/zzz.R
 create mode 100644 R-package/README.md
 create mode 100644 R-package/man/FastRGF_Classifier.Rd
 create mode 100644 R-package/man/FastRGF_Regressor.Rd
 create mode 100644 R-package/man/Internal_class.Rd
 create mode 100644 R-package/man/RGF_Classifier.Rd
 create mode 100644 R-package/man/RGF_Regressor.Rd
 create mode 100644 R-package/man/RGF_cleanup_temp_files.Rd
 create mode 100644 R-package/man/TO_scipy_sparse.Rd
 create mode 100644 R-package/man/mat_2scipy_sparse.Rd
 create mode 100644 R-package/tests/testthat.R
 create mode 100644 R-package/tests/testthat/test_package.R
 create mode 100644 R-package/vignettes/the_RGF_package.Rmd

$ D:\Users\nekit\Downloads\rgf>git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

@StrikerRUS
Copy link
Member

I've fixed this PR, so we can start review now. :-)

@mlampros
You can apply my changes locally on your compute by either git pull, or just re-clone rgf-1 repo.

Copy link
Member

@StrikerRUS StrikerRUS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix DESCRIPTION file.

Date: 2018-07-22
Authors@R: c( person("Lampros", "Mouselimis", email = "mouselimislampros@gmail.com", role = c("aut", "cre")), person("Ryosuke", "Fukatani", role = "cph", comment = "Author of the python wrapper of the 'Regularized Greedy Forest' machine learning algorithm"), person("Tong", "Zhang", role = "cph", comment = "Author of the 'Regularized Greedy Forest' and of the Multi-core implementation of Regularized Greedy Forest machine learning algorithm"), person("Rie", "Johnson", role = "cph", comment = "Author of the 'Regularized Greedy Forest' machine learning algorithm") )
Maintainer: Lampros Mouselimis <mouselimislampros@gmail.com>
BugReports: https://github.com/mlampros/RGF/issues
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the link with https://github.com/RGF-team/rgf/issues

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed and pushed changes

Authors@R: c( person("Lampros", "Mouselimis", email = "mouselimislampros@gmail.com", role = c("aut", "cre")), person("Ryosuke", "Fukatani", role = "cph", comment = "Author of the python wrapper of the 'Regularized Greedy Forest' machine learning algorithm"), person("Tong", "Zhang", role = "cph", comment = "Author of the 'Regularized Greedy Forest' and of the Multi-core implementation of Regularized Greedy Forest machine learning algorithm"), person("Rie", "Johnson", role = "cph", comment = "Author of the 'Regularized Greedy Forest' machine learning algorithm") )
Maintainer: Lampros Mouselimis <mouselimislampros@gmail.com>
BugReports: https://github.com/mlampros/RGF/issues
URL: https://github.com/mlampros/RGF
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/RGF-team/rgf/tree/master/R-package

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed and pushed changes

Maintainer: Lampros Mouselimis <mouselimislampros@gmail.com>
BugReports: https://github.com/mlampros/RGF/issues
URL: https://github.com/mlampros/RGF
Description: Regularized Greedy Forest wrapper of the 'Regularized Greedy Forest' <https://github.com/fukatani/rgf_python> 'python' package, which also includes a Multi-core implementation (FastRGF) <https://github.com/baidu/fast_rgf>.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Links should be updated

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed and pushed changes

URL: https://github.com/mlampros/RGF
Description: Regularized Greedy Forest wrapper of the 'Regularized Greedy Forest' <https://github.com/fukatani/rgf_python> 'python' package, which also includes a Multi-core implementation (FastRGF) <https://github.com/baidu/fast_rgf>.
License: MIT + file LICENSE
SystemRequirements: Python (2.7 or >= 3.4), rgf_python, scikit-learn (>= 0.18.0), scipy ( >= 1.0.0), numpy ( >= 1.14.0). Detailed installation instructions for each operating system can be found in the README file.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scipy ( >= 1.0.0), numpy ( >= 1.14.0).

Can you please explain this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RGF R package includes the mat_2scipy_sparse and TO_scipy_sparse functions. For these two functions to work properly, scipy and numpy are the requirements.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, sure! rgf_python requires these packages too, because scikit-learn requires them =)
I'm wondering about such strange (very fresh) versions.

VignetteBuilder: knitr



Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove 3 excess blank lines in the end of the file

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed and pushed changes

@mlampros
Copy link
Collaborator Author

@StrikerRUS so that I'm sure that I updated the correct DESCRIPTION file. Inside the R-package folder now appears an RGF folder. I updated the DESCRIPTION file of the RGF folder and not the DESCRIPTION file of the R-package folder (it's my first pull request and I'm sorry if this is obvious)

@StrikerRUS
Copy link
Member

@mlampros No problem!

Did you do the following before committing?

You can apply my changes locally on your compute by either git pull, or just re-clone rgf-1 repo.

@mlampros
Copy link
Collaborator Author

mlampros commented Jul 31, 2018

@StrikerRUS I did the following:

cd /rgf-1 # this is the fork of rgf
git pull origin master

Here I fixed the DESCRIPTION file as you suggested and then,

git add .
git status
git commit -m "fixed DESCRIPTION FILE"
git push -u origin master

@StrikerRUS
Copy link
Member

Strange...
Seems that gut pull didn't perform the job. Or something went wrong.

Lets do the following. I'll revert your last commit with duplicated files in wrong folder. After that you'll remove and re-clone the rgf-1 repository on your machine to make sure you're working with the latest changes. Agree?

@mlampros
Copy link
Collaborator Author

mlampros commented Jul 31, 2018

yes, you can proceed. Notify me once I have to re-fork the rgf repository.

@StrikerRUS
Copy link
Member

@mlampros

... I have to re-fork the rgf repository.

You don't need to re-fork, just re-clone your repository (rgf-1). Since you've proposed this PR, I have write access to the corresponding branch (master in our case). It means that I've fixed right in your repository rgf-1, and now you should just update your local files. So please rm -rf rgf-1, git clone https://github.com/mlampros/rgf-1.git and continue working as usual,


.onAttach <- function(libname, pkgname) {

packageStartupMessage("Begninning from version 1.0.3 the 'dgCMatrix_2scipy_sparse' function was renamed to 'TO_scipy_sparse' and now accepts either a 'dgCMatrix' or a 'dgRMatrix' as input. The appropriate format for the 'RGF' package in case of sparse matrices is the 'dgCMatrix' format (scipy.sparse.csc_matrix)")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo (Beginning)




#### **Macintosh OSX** [ installed / tested on Python >= 3.4 ]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mac OS X is formal name.


testthat::expect_true( length(pr) == length(y_reg) && sum(validate) == 15 && is.double(tmp_score) && is.double(tmp_score_W) )
})
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need irregular arguments test. ex. n_estimators < 0.
It is not necessary to examine all the arguments, but it is better for one argument per estimator class to have such a test.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right. However, since the R-package ports the Python-package I don't think it's wise to repeat the same tests.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, you don't have to test rgf_python here.
But what happen in R layer if rgf_python raised exception?

reticulate defines behavior in such case?
If so, we don't have to test reticulate function.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think an example can solve the issue here,

library(RGF)
set.seed(1)
x = matrix(runif(1000), nrow = 100, ncol = 10)
y = runif(100)
RGF_regr = RGF_Regressor$new(max_leaf = -1)
RGF_regr$fit(x, y)

This is the error that I receive using the Rstudio IDE,
 Show Traceback
 
 Rerun with Debug
 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: max_leaf must be greater than 0 but was -1. 

Concerning the tests of the *reticulate* package, if you don't mind I would like to keep the tests intact, because I have also to submit the package to CRAN before I update the version for the RGF-team repository and this might lead to issues.

@StrikerRUS
Copy link
Member

StrikerRUS commented Aug 14, 2018

All problems with certificates have been solved. arxiv.org certificate has been added to the rest certificates, link to r-pkg.org has been replaced with link to the package official page at CRAN, link to the MinGW-w64 title page has been replaced with http protocol, link to MinGW-w64 download page has been replaced with the direct link to SourceForge.

@mlampros Please fix the WARNING which has been introduced in 4470326

* checking for missing documentation entries ... WARNING
Undocumented code objects:
  ‘FastRGF_Classifier’ ‘FastRGF_Regressor’ ‘mat_2scipy_sparse’
  ‘RGF_Classifier’ ‘RGF_cleanup_temp_files’ ‘RGF_Regressor’
  ‘TO_scipy_sparse’
All user-level objects in a package should have documentation entries.
See chapter ‘Writing R documentation files’ in the ‘Writing R
Extensions’ manual.


else {

stop("the function can take either a 'sparse_row_matrix' or a 'sparse_column_matrix' for the 'format' parameter as input", call. = F)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this logic tested?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it is tested


<br><br>

#### **Windows OS** [ installed / tested on Python >= 3.4 ]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(In the future, we should test by appveyor.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if I can help for this particular matter, but I think in case of Windows the integration of a docker image is necessary (I haven't done this before)

Copy link
Member

@StrikerRUS StrikerRUS Aug 15, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, lets do this in next PR, not this one.

exit -1
#elif grep -q -R "NOTE" "$LOG_FILE_NAME"; then
# echo "NOTES have been found in the build log!"
# exit -1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If unnecessary, l.55-l.57 should be deleted.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess @StrikerRUS should decide if this code chunk should be removed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These lines will be uncommented right after the merging this PR. The reason is that at present there is no rgf/R-package directory and CRAN check produces a NOTE for this.

@codecov-io
Copy link

Codecov Report

❗ No coverage uploaded for pull request base (master@60e0b6b). Click here to learn what that means.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff            @@
##             master     #208   +/-   ##
=========================================
  Coverage          ?   16.66%           
=========================================
  Files             ?        3           
  Lines             ?       60           
  Branches          ?        0           
=========================================
  Hits              ?       10           
  Misses            ?       50           
  Partials          ?        0

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 60e0b6b...53112f4. Read the comment docs.

@StrikerRUS
Copy link
Member

Does anyone know why codecov appeared here?? Before now it was silent and I liked it.

@fukatani
Copy link
Member

I have never used codecov. Has anyone registered? Otherwise is it a codecov bug?

# exit -1
fi

Rscript -e 'covr::codecov(quiet = FALSE)'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line can be related to codecov behavior.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line has been here since the first commit in the PR. Before today it silently printed information to the Travis log and updated the badge, but today decided to come here in comments and post the report.

PS. it seems that registration at codecov.io isn't required and done automatically after using the package.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to rollback to the previous behavior: report is printed to the Travis log and badge updates without these useless and annoying comments.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've found the way to easily disable comments, but this PR should be merged first.

@StrikerRUS
Copy link
Member

StrikerRUS commented Aug 15, 2018

I have tested different versions of R. The results are following.

3.5.1 (current):

OK

3.4.4:

OK

3.4.0:

OK

3.3.0:

NOTE

* checking CRAN incoming feasibility ... NOTE
Maintainer: ‘Lampros Mouselimis <mouselimislampros@gmail.com>’
License components with restrictions and base license permitting such:
  MIT + file LICENSE
File 'LICENSE':
  YEAR: 2018
  COPYRIGHT HOLDER: Mouselimis Lampros <mouselimislampros@gmail.com>

3.2.3:

NOTE

* checking CRAN incoming feasibility ... NOTE
Maintainer: ‘Lampros Mouselimis <mouselimislampros@gmail.com>’
License components with restrictions and base license permitting such:
  MIT + file LICENSE
File 'LICENSE':
  YEAR: 2018
  COPYRIGHT HOLDER: Mouselimis Lampros <mouselimislampros@gmail.com>

3.2.0:

NOTEs

* checking CRAN incoming feasibility ... NOTE
Maintainer: ‘Lampros Mouselimis <mouselimislampros@gmail.com>’
License components with restrictions and base license permitting such:
  MIT + file LICENSE
File 'LICENSE':
  YEAR: 2018
  COPYRIGHT HOLDER: Mouselimis Lampros <mouselimislampros@gmail.com>
* checking top-level files ... NOTE
Non-standard file/directory found at top level:
  ‘NEWS.md’

3.1.0:

WARNING & NOTEs

* checking CRAN incoming feasibility ... NOTE
Maintainer: ‘Lampros Mouselimis <mouselimislampros@gmail.com>’
Components with restrictions and base license permitting such:
  MIT + file LICENSE
File 'LICENSE':
  YEAR: 2018
  COPYRIGHT HOLDER: Mouselimis Lampros <mouselimislampros@gmail.com>
Possibly mis-spelled fields in DESCRIPTION:
  ‘RoxygenNote’
* checking top-level files ... NOTE
Non-standard file/directory found at top level:
  ‘NEWS.md’
* checking PDF version of manual ... WARNING
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
LaTeX errors found:
! LaTeX Error: File `upquote.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
! Emergency stop.
<read *> 
l.8 \begin{document}
                    ^^M
!  ==> Fatal error occurred, no output PDF file produced!

3.0.0:

FAILS

I don't know what's the license note mean, but I think that we can easily downgrade the required R version to 3.0.0 (WARNING is a bug of the test environment, not the package itself). @mlampros What was the reason of setting min version to 3.2.3?

@mlampros
Copy link
Collaborator Author

@StrikerRUS the main reason that I use the 3.2.3 version is because I don't want to force users to use the latest version (currently 3.5.1) but on the other hand to avoid using a too old version, as new features and bugs are introduced / fixed from one version to another. You can have a look to the news sections.

@StrikerRUS
Copy link
Member

@mlampros Sorry, didn't get it. I'm speaking about earlier versions. On what concrete features/bug fixes of 3.2.3 version RGF is relied?

OK, I'll paraphrase. Imagine, I'm using R 3.2.0 and you are forcing me to upgrade it to 3.2.3. Why? The fact is that RGF can work with my version of R. You cannot set min version out of nothing.

@mlampros
Copy link
Collaborator Author

@StrikerRUS, every time I have to test-check any package that I maintain I've to test it with the latest R-devel version. I guess the 3.2.3 version is for me, as I said, not the newest but also not the oldest one. However, the RGF package imports the following packages,

  • reticulate (requires R >= 3.0)
  • R6 (requires R >= 3.0)
  • Matrix (requires R >= 3.2.0)

You are probably right on that I've have to update the minimum version to 3.2.0, however I didn't like the tone of your comment.

@StrikerRUS
Copy link
Member

@mlampros

however I didn't like the tone of your comment.

Sorry, I didn't want to hurt you! Probably it's due to my non-perfect English :-)

Speaking about this,

Matrix (requires R >= 3.2.0)

it's true only for the two latest (1.2-13, 1.2-14) versions of the Matrix package. Is there any reason to force users use them? Because 1.2-12 version, which was published in November 2017 (I think rather fresh), requires R >= 3.0.1: https://github.com/cran/Matrix/blob/24289cf538a36e90ad4bf8041f51d3397559fd9e/DESCRIPTION

@fukatani
Copy link
Member

fukatani commented Aug 17, 2018

Thanks to huge contribution by @mlampros and @StrikerRUS , It seems that this PR has quality that can be merged in almost.

In my opinion, R version is still as it is, and expansion of support can be discussed in another PR.

@StrikerRUS
Copy link
Member

@fukatani Yeah! Absolutely agree! My browser even freezes when opens this PR discussion - so many comments 😄

I'll create separate issues for some comments, which left undiscussed here.

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

Successfully merging this pull request may close these issues.

None yet

4 participants