[R-pkg-devel] Having shiny as an optional dependency

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Mon Nov 16 11:53:14 CET 2020


On 16/11/2020 4:55 a.m., Kamil Stachowski wrote:
> I did briefly wonder why your reply to me cited an email from Akshit Achara
> who asked about third party C++ API. I assumed it was because the solution
> to his problem and mine was the same.
> 
> In the meantime, I got a reply from Kurt Hornik who said I have a top-level
> call
> 
> soundcorrsGUI <- shiny::shinyApp (ui, server)
>>
> 
> so what I should really do is to move "shiny" from "Suggests" to "Imports".
> I don't want to do this, however, because the GUI is just an addition, the
> package is perfectly usable without it. I wrapped "soundcorrsGUI" in a
> function:
> 
> soundcorrsGUI <- function () {
>>
>> if (!requireNamespace("shiny",quietly=T) ||
>> !requireNamespace("shinyjqui",quietly=T))
>> stop ("\"soundcorrsGUI\" requires packages \"shiny\" and \"shinyjqui\".")
>>
>> shiny::shinyApp (ui, server)
>>
>> }
>>
> 
> and this seems to solve the problem with "shiny", but now I have a problem
> with "shinyjqui". I actually only need one function from it: in the call to
> "shinyApp" above,
> 
> ui <- shiny::navbarPage ([…] ui.soundchanges […])
>>
> 
> where
> 
> ui.soundchanges <- shiny::fluidPage ([…]
>> shinyjqui::sortableCheckboxGroupInput […])
>>
> 
> I tried wrapping "ui.soundchanges" in a function in the same way as I did
> with "soundcorrsGUI" but this doesn't help.
> 
> Is there a way to make it work without turning "shiny" and "shinyjqui" into
> obligatory dependencies?

If you never call shinyjqui::sortableCheckboxGroupInput except in that 
one place, then you should put that call within the requireNamespace 
test.  Things I'd change there:

  - Do not use T, use TRUE.

  - Wrap *everything* that requires those packages in the 
requireNamespace test.

  - Make sure your example code in help pages never calls that function 
unless shiny and shinyjqui are present, by a test similar to the above 
but a positive one:

if (requireNamespace("shiny") && requireNamespace("shinyjqui")) {

    # example code

}

Duncan Murdoch


> 
> Best wishes,
> Kamil Stachowski
> 
> On Mon, 16 Nov 2020, 00:55 Uwe Ligges, <ligges using statistik.tu-dortmund.de>
> wrote:
> 
>> On 14.11.2020 19:53, Kamil Stachowski wrote:
>>> This is actually what I do. Before you replied, I was told to write to
>> CRAN
>>> and explain, and they will decide whether the packages will be installed
>> on
>>> CRAN machines. Thank you for your help nonetheless.
>>
>> No, I told you about a "third party C++ API" you asked for, not about an
>> R package. R packages  from BioC + CRAN should be availabe on CRAN, in
>> that case it is a problem in your package.
>>
>> Best,
>> Uwe Ligges
>>
>>
>>>
>>> Best,
>>> Kamil
>>>
>>> On Sat, 14 Nov 2020 at 19:39, Gábor Csárdi <csardi.gabor using gmail.com>
>> wrote:
>>>
>>>> You probably import functions from shiny. Don't do that, refer to them
>>>> with the `::` operator instead.
>>>>
>>>> Gabor
>>>>
>>>> On Sat, Nov 14, 2020 at 6:12 PM Kamil Stachowski
>>>> <kamil.stachowski using gmail.com> wrote:
>>>>>
>>>>> I wrote a package that contains a graphical interface written with
>>>> packages
>>>>> "shiny" and "shinyjqui". My package can also be used from the CLI, so I
>>>>> listed both "shiny" and "shinyjqui" as optional dependencies. I ran R
>> CMD
>>>>> check --as-cran on my computer in R 3.6.3 and devel, and both passed
>>>>> without any errors or warnings. However, when I tried uploading the
>>>> package
>>>>> to CRAN, I got this error:
>>>>>
>>>>> Error in loadNamespace(x) : there is no package called ‘shiny’
>>>>> Error: unable to load R code in package ‘soundcorrs’
>>>>> Execution halted
>>>>> ERROR: lazy loading failed for package ‘soundcorrs’
>>>>>
>>>>> How can I fix this?
>>>>>
>>>>>           [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-package-devel using r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>>
>>>
>>>
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>



More information about the R-package-devel mailing list