First post, so I hope this respects the local norms.
We have a metapackage that has a function similar to tidyverse, statnet; its only purpose is to make it easy to install and load a set of packages (for network analysis) that share a common data structure and API. We've been struggling a bit over the years with how to structure it with Depends, Imports, and Suggests -- and I turned to the tidyverse package for guidance.
I found myself perplexed by the way the packages Tidyverse refers to are included (or not) in 3 places: NAMESPACE, DESCRIPTION, and attach.R. If you recall, tidyverse treats all dependencies as IMPORTS (it DEPENDS only on R), and it identifies a subset of the tidyverse pkgs as "core", and attaches these.
Schematically the allocations are:
I'm assuming the orange pkgs (imported in DESCRIPTION only) are used by the tidyverse package itself; they aren't intended for the end user.
The pkgs (in gray) are all listed in Description as IMPORTS, to make sure they are installed, and I'm assuming the token importFrom in NAMESPACE is just there to avoid an Rcheck warning, is that right? And the goal here is to allow the user to access functions in these pkgs using the pkg:: syntax?
The core pkgs (in green and blue) are not all handled the same way, and this I'd like some help to understand. All are IMPORTS in DESCRIPTION (makes sense). But some are also importFrom in NAMESPACE, while others are not. Can anyone explain the reason for this difference?
Many thanks in advance