Compute directory path for package. To avoid repeating the same computing, the abspath is cached on the package object.
Return the module object from which the call was made. For instance, if A defined in module M makes a call to B and B, by calling this function, can know the module of the caller.
If this function is passed a module, return the dotted Python package name of the package in which the module lives. If this function is passed a package, return the dotted Python package name of the package itself.