\section{\module{aepack} ---
         Conversion between Python variables and AppleEvent data containers}

\declaremodule{standard}{aepack}
  \platform{Mac}
%\moduleauthor{Jack Jansen?}{email}
\modulesynopsis{Conversion between Python variables and AppleEvent
                data containers.}
\sectionauthor{Vincent Marchetti}{vincem@en.com}


The \module{aepack} module defines functions for converting (packing)
Python variables to AppleEvent descriptors and back (unpacking).
Within Python the AppleEvent descriptor is handled by Python objects
of built-in type \class{AEDesc}, defined in module \refmodule{Carbon.AE}.

The \module{aepack} module defines the following functions:


\begin{funcdesc}{pack}{x\optional{, forcetype}}
Returns an \class{AEDesc} object  containing a conversion of Python
value x. If \var{forcetype} is provided it specifies the descriptor
type of the result. Otherwise, a default mapping of Python types to
Apple Event descriptor types is used, as follows:

\begin{tableii}{l|l}{textrm}{Python type}{descriptor type}
  \lineii{\class{FSSpec}}{typeFSS}
  \lineii{\class{FSRef}}{typeFSRef}
  \lineii{\class{Alias}}{typeAlias}
  \lineii{integer}{typeLong (32 bit integer)}
  \lineii{float}{typeFloat (64 bit floating point)}
  \lineii{string}{typeText}
  \lineii{unicode}{typeUnicodeText}
  \lineii{list}{typeAEList}
  \lineii{dictionary}{typeAERecord}
  \lineii{instance}{\emph{see below}}
\end{tableii}  
 
If \var{x} is a Python instance then this function attempts to call an
\method{__aepack__()} method.  This method should return an
\class{AEDesc} object.

If the conversion \var{x} is not defined above, this function returns
the Python string representation of a value (the repr() function)
encoded as a text descriptor.
\end{funcdesc}

\begin{funcdesc}{unpack}{x\optional{, formodulename}}
  \var{x} must be an object of type \class{AEDesc}. This function
  returns a Python object representation of the data in the Apple
  Event descriptor \var{x}. Simple AppleEvent data types (integer,
  text, float) are returned as their obvious Python counterparts.
  Apple Event lists are returned as Python lists, and the list
  elements are recursively unpacked.  Object references
  (ex. \code{line 3 of document 1}) are returned as instances of
  \class{aetypes.ObjectSpecifier}, unless \code{formodulename}
  is specified.  AppleEvent descriptors with
  descriptor type typeFSS are returned as \class{FSSpec}
  objects.  AppleEvent record descriptors are returned as Python
  dictionaries, with 4-character string keys and elements recursively
  unpacked.
  
  The optional \code{formodulename} argument is used by the stub packages
  generated by \module{gensuitemodule}, and ensures that the OSA classes
  for object specifiers are looked up in the correct module. This ensures
  that if, say, the Finder returns an object specifier for a window
  you get an instance of \code{Finder.Window} and not a generic
  \code{aetypes.Window}. The former knows about all the properties
  and elements a window has in the Finder, while the latter knows
  no such things.
\end{funcdesc}


\begin{seealso}
  \seemodule{Carbon.AE}{Built-in access to Apple Event Manager routines.}
  \seemodule{aetypes}{Python definitions of codes for Apple Event
                      descriptor types.}
  \seetitle[http://developer.apple.com/techpubs/mac/IAC/IAC-2.html]{
            Inside Macintosh: Interapplication
            Communication}{Information about inter-process
            communications on the Macintosh.}
\end{seealso}
