A package is collection of types and values that are versioned together. If this sounds abstract just think of any of the popular package managers you are familiar with: NPM, NuGet, Maven, pip or Cabal. What they consider a package is what this represents. A package contains modules which further group types and values.
Packages are available at two different levels of detail. A package specification only contains types that are exposed publicly and type signatures for values that are exposed publicly. A package definition contains all the details including implementation and private types and values.
Get an empty package specification with no modules.
Type that represents a package definition. A package definition contains all the details including implementation
and private types and values. The modules field is a dictionary keyed by module name that contains access controlled
module definitions. The AccessControlled adds access classifiers to each module to differentiate public and private
modules.
Get an empty package definition with no modules.
Look up a module specification by its path in a package specification.
Look up a module definition by its path in a package specification.
Look up a type specification by its module path and name in a package specification.
Look up a value specification by its module path and name in a package specification.
Look up a value definition by its module path and name in a package specification.
A package name is a globally unique identifier for a package. It is represented by a path, which is a list of names.
Turn a package definition into a package specification. Only publicly exposed modules will be included in the result.
Turn a package definition into a package specification. Non-exposed modules will also be included in the result.
Remove all type and value attributes from a package definition.
Remove all type attributes from a package specification.
Map all type and value attributes of a package definition.
Map all type attributes of a package specification.
Filter down the modules in this distribution to the specified modules and their transitive dependencies.
Get the list of modules within this package ordered by dependency. If module B depends on A than module B is guaranteed to be after A in the list.
Type that represents a package specification. A package specification only contains types that are exposed publicly and type signatures for values that are exposed publicly.