Reference Guides » Undocumented Contexts
Package
The "Package`" context drives the new-style package system. It's functions are:
DeclarePackage
Declares a package to be loaded by the autoload mechanism. It's called like
Package`DeclareLoad[
{syms...},
context,
ops
]
Where it takes as options
HiddenImport— whether or not to expose the context after loading (Falseby default)Path— the path to use when finding the context fileHiddenContexts— apparently unused?ExportedContexts— apparently unused?
Here' an example with the "Macros`" package:
Package`DeclareLoad[
{
"Macros`SetArgumentCount",
"Macros`$FailRHS"
},
"Macros`",
Package`HiddenImport->True
]
Then the autoloading was configured on all these packages:
Macros`SetArgumentCount//OwnValues
{HoldPattern[Macros`SetArgumentCount]:>Package`ActivateLoad[Macros`SetArgumentCount,{Macros`$FailRHS,Macros`SetArgumentCount},"Macros`",{Package`HiddenImport->True,Path->Automatic}]}
But if we let the autoloader work the OwnValues are cleared:
Macros`SetArgumentCount
Macros`SetArgumentCount//OwnValues
{}
ActivateLoad
Used by DeclaredLoad to auto-load the package. Called like
Package`ActivateLoad[sym,
{pkgSyms...},
context,
ops
]
As options it takes
HiddenImport— whether or not to expose the context after loading (Falseby default)Path— the path to use when finding the context file
PackageInformation
Extracts package info for a package declared in this new style:
Package`PackageInformation["NumericArrayUtilities`"]//Keys
{"PackageExports","PackageFragments"}
If a package hasn't been loaded it throws an error:
Package`PackageInformation["CacheManager`"]
This can be quieted by setting Package`ForceLoad to False :
Package`PackageInformation["CacheManager`", Package`ForceLoad->False]
If the package is loaded it works again:
Block[{$ContextPath={"System`"}}, <<CacheManager`];
Package`PackageInformation[
"CacheManager`",
Package`ForceLoad->False
]~Lookup~"PackageExports"
HoldComplete[CacheManager`CacheData,CacheManager`$DefaultCacheMethod,CacheManager`$DefaultCacheSize,CacheManager`CacheSize,CacheManager`CacheSymbolQ,CacheManager`$Caches,CacheManager`GetCache,CacheManager`CreateCache,CacheManager`RemoveCache,CacheManager`CacheGet,CacheManager`CacheSet,CacheManager`CacheUnset,CacheManager`CacheKeys,CacheManager`iKeys,CacheManager`CacheInformation,CacheManager`makeCacheSymbol,CacheManager`makeCacheFile,CacheManager`CacheDirectory,$CacheBaseDirectory,CacheManager`$FlushInterval,CacheManager`$AllowAutoFlushing,CacheManager`CacheDirtyQ,CacheManager`CacheDirtiness,CacheManager`FlushCacheDeferred,CacheManager`FlushDirtyCaches,CacheManager`FlushCache,CacheManager`SpillCache,CacheManager`CachedExpression,CacheManager`CachedFunction,CacheManager`CachedMap]
LoadPackage
Not entirely clear how this works. Ought to do the actual work of loading the package, but can't figure out what actually changes after using it.
CreatePackageCache
Creates a .mx cache of a package for optimized loading, but I can't remember how exactly this works. Is prone to crashing kernels without a destination directory or throwing cascades of errors.