[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