summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Doc/lib/libmarshal.tex
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/lib/libmarshal.tex
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/lib/libmarshal.tex')
-rw-r--r--sys/src/cmd/python/Doc/lib/libmarshal.tex117
1 files changed, 117 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/lib/libmarshal.tex b/sys/src/cmd/python/Doc/lib/libmarshal.tex
new file mode 100644
index 000000000..63ff39261
--- /dev/null
+++ b/sys/src/cmd/python/Doc/lib/libmarshal.tex
@@ -0,0 +1,117 @@
+\section{\module{marshal} ---
+ Internal Python object serialization}
+
+\declaremodule{builtin}{marshal}
+\modulesynopsis{Convert Python objects to streams of bytes and back
+ (with different constraints).}
+
+
+This module contains functions that can read and write Python
+values in a binary format. The format is specific to Python, but
+independent of machine architecture issues (e.g., you can write a
+Python value to a file on a PC, transport the file to a Sun, and read
+it back there). Details of the format are undocumented on purpose;
+it may change between Python versions (although it rarely
+does).\footnote{The name of this module stems from a bit of
+ terminology used by the designers of Modula-3 (amongst others), who
+ use the term ``marshalling'' for shipping of data around in a
+ self-contained form. Strictly speaking, ``to marshal'' means to
+ convert some data from internal to external form (in an RPC buffer for
+ instance) and ``unmarshalling'' for the reverse process.}
+
+This is not a general ``persistence'' module. For general persistence
+and transfer of Python objects through RPC calls, see the modules
+\refmodule{pickle} and \refmodule{shelve}. The \module{marshal} module exists
+mainly to support reading and writing the ``pseudo-compiled'' code for
+Python modules of \file{.pyc} files. Therefore, the Python
+maintainers reserve the right to modify the marshal format in backward
+incompatible ways should the need arise. If you're serializing and
+de-serializing Python objects, use the \module{pickle} module instead.
+\refstmodindex{pickle}
+\refstmodindex{shelve}
+\obindex{code}
+
+\begin{notice}[warning]
+The \module{marshal} module is not intended to be secure against
+erroneous or maliciously constructed data. Never unmarshal data
+received from an untrusted or unauthenticated source.
+\end{notice}
+
+Not all Python object types are supported; in general, only objects
+whose value is independent from a particular invocation of Python can
+be written and read by this module. The following types are supported:
+\code{None}, integers, long integers, floating point numbers,
+strings, Unicode objects, tuples, lists, dictionaries, and code
+objects, where it should be understood that tuples, lists and
+dictionaries are only supported as long as the values contained
+therein are themselves supported; and recursive lists and dictionaries
+should not be written (they will cause infinite loops).
+
+\strong{Caveat:} On machines where C's \code{long int} type has more than
+32 bits (such as the DEC Alpha), it is possible to create plain Python
+integers that are longer than 32 bits.
+If such an integer is marshaled and read back in on a machine where
+C's \code{long int} type has only 32 bits, a Python long integer object
+is returned instead. While of a different type, the numeric value is
+the same. (This behavior is new in Python 2.2. In earlier versions,
+all but the least-significant 32 bits of the value were lost, and a
+warning message was printed.)
+
+There are functions that read/write files as well as functions
+operating on strings.
+
+The module defines these functions:
+
+\begin{funcdesc}{dump}{value, file\optional{, version}}
+ Write the value on the open file. The value must be a supported
+ type. The file must be an open file object such as
+ \code{sys.stdout} or returned by \function{open()} or
+ \function{posix.popen()}. It must be opened in binary mode
+ (\code{'wb'} or \code{'w+b'}).
+
+ If the value has (or contains an object that has) an unsupported type,
+ a \exception{ValueError} exception is raised --- but garbage data
+ will also be written to the file. The object will not be properly
+ read back by \function{load()}.
+
+ \versionadded[The \var{version} argument indicates the data
+ format that \code{dump} should use (see below)]{2.4}
+\end{funcdesc}
+
+\begin{funcdesc}{load}{file}
+ Read one value from the open file and return it. If no valid value
+ is read, raise \exception{EOFError}, \exception{ValueError} or
+ \exception{TypeError}. The file must be an open file object opened
+ in binary mode (\code{'rb'} or \code{'r+b'}).
+
+ \warning{If an object containing an unsupported type was
+ marshalled with \function{dump()}, \function{load()} will substitute
+ \code{None} for the unmarshallable type.}
+\end{funcdesc}
+
+\begin{funcdesc}{dumps}{value\optional{, version}}
+ Return the string that would be written to a file by
+ \code{dump(\var{value}, \var{file})}. The value must be a supported
+ type. Raise a \exception{ValueError} exception if value has (or
+ contains an object that has) an unsupported type.
+
+ \versionadded[The \var{version} argument indicates the data
+ format that \code{dumps} should use (see below)]{2.4}
+\end{funcdesc}
+
+\begin{funcdesc}{loads}{string}
+ Convert the string to a value. If no valid value is found, raise
+ \exception{EOFError}, \exception{ValueError} or
+ \exception{TypeError}. Extra characters in the string are ignored.
+\end{funcdesc}
+
+In addition, the following constants are defined:
+
+\begin{datadesc}{version}
+ Indicates the format that the module uses. Version 0 is the
+ historical format, version 1 (added in Python 2.4) shares interned
+ strings and version 2 (added in Python 2.5) uses a binary format for
+ floating point numbers. The current version is 2.
+
+ \versionadded{2.4}
+\end{datadesc}