Merged revisions 87807,87820,87831,87859,87870 via svnmerge from

svn+ssh://svn.python.org/python/branches/py3k

........
  r87807 | georg.brandl | 2011-01-06 20:28:18 +0100 (Do, 06 Jan 2011) | 1 line

  #10846: fix typo.
........
  r87820 | georg.brandl | 2011-01-07 19:28:45 +0100 (Fr, 07 Jan 2011) | 1 line

  #10856: document (Base)Exception.args better.
........
  r87831 | georg.brandl | 2011-01-07 21:58:25 +0100 (Fr, 07 Jan 2011) | 1 line

  Fix indent.
........
  r87859 | georg.brandl | 2011-01-08 10:45:43 +0100 (Sa, 08 Jan 2011) | 1 line

  #10855: document close() semantics of wave objects.
........
  r87870 | georg.brandl | 2011-01-08 22:04:25 +0100 (Sa, 08 Jan 2011) | 1 line

  zlib only works with bytes objects.
........
This commit is contained in:
Georg Brandl 2011-01-09 07:59:02 +00:00
parent 7fdc746a81
commit ec78b8b170
4 changed files with 66 additions and 46 deletions

View File

@ -18,12 +18,10 @@ equivalent, even if they have the same name.
The built-in exceptions listed below can be generated by the interpreter or
built-in functions. Except where mentioned, they have an "associated value"
indicating the detailed cause of the error. This may be a string or a tuple
containing several items of information (e.g., an error code and a string
explaining the code). The associated value is usually passed to the exception
class's constructor. If the exception class is derived from the standard root
class :exc:`BaseException`, the associated value is present as the exception
instance's :attr:`args` attribute.
indicating the detailed cause of the error. This may be a string or a tuple of
several items of information (e.g., an error code and a string explaining the
code). The associated value is usually passed as arguments to the exception
class's constructor.
User code can raise built-in exceptions. This can be used to test an exception
handler or to report an error condition "just like" the situation in which the
@ -38,16 +36,32 @@ defining exceptions is available in the Python Tutorial under
The following exceptions are used mostly as base classes for other exceptions.
.. XXX document with_traceback()
.. exception:: BaseException
The base class for all built-in exceptions. It is not meant to be directly
inherited by user-defined classes (for that use :exc:`Exception`). If
inherited by user-defined classes (for that, use :exc:`Exception`). If
:func:`bytes` or :func:`str` is called on an instance of this class, the
representation of the argument(s) to the instance are returned or the empty
string when there were no arguments. All arguments are stored in :attr:`args`
as a tuple.
representation of the argument(s) to the instance are returned, or the empty
string when there were no arguments.
.. attribute:: args
The tuple of arguments given to the exception constructor. Some built-in
exceptions (like :exc:`IOError`) expect a certain number of arguments and
assign a special meaning to the elements of this tuple, while others are
usually called only with a single string giving an error message.
.. method:: with_traceback(tb)
This method sets *tb* as the new traceback for the exception and returns
the exception object. It is usually used in exception handling code like
this::
try:
...
except SomeException:
tb = sys.exc_info()[2]
raise OtherException(...).with_traceback(tb)
.. exception:: Exception

View File

@ -632,9 +632,9 @@ waiting until some other thread calls :meth:`release`.
^^^^^^^^^^^^^^^^^^^^^^^^^^
Semaphores are often used to guard resources with limited capacity, for example,
a database server. In any situation where the size of the resource size is
fixed, you should use a bounded semaphore. Before spawning any worker threads,
your main thread would initialize the semaphore::
a database server. In any situation where the size of the resource is fixed,
you should use a bounded semaphore. Before spawning any worker threads, your
main thread would initialize the semaphore::
maxconnections = 5
...

View File

@ -14,8 +14,8 @@ The :mod:`wave` module defines the following function and exception:
.. function:: open(file, mode=None)
If *file* is a string, open the file by that name, other treat it as a seekable
file-like object. *mode* can be any of
If *file* is a string, open the file by that name, otherwise treat it as a
seekable file-like object. *mode* can be any of
``'r'``, ``'rb'``
Read only mode.
@ -26,9 +26,14 @@ The :mod:`wave` module defines the following function and exception:
Note that it does not allow read/write WAV files.
A *mode* of ``'r'`` or ``'rb'`` returns a :class:`Wave_read` object, while a
*mode* of ``'w'`` or ``'wb'`` returns a :class:`Wave_write` object. If *mode*
is omitted and a file-like object is passed as *file*, ``file.mode`` is used as
the default value for *mode* (the ``'b'`` flag is still added if necessary).
*mode* of ``'w'`` or ``'wb'`` returns a :class:`Wave_write` object. If
*mode* is omitted and a file-like object is passed as *file*, ``file.mode``
is used as the default value for *mode* (the ``'b'`` flag is still added if
necessary).
If you pass in a file-like object, the wave object will not close it when its
:meth:`close` method is called; it is the caller's responsibility to close
the file object.
.. function:: openfp(file, mode)
@ -52,8 +57,8 @@ Wave_read objects, as returned by :func:`.open`, have the following methods:
.. method:: Wave_read.close()
Close the stream, and make the instance unusable. This is called automatically
on object collection.
Close the stream if it was opened by :mod:`wave`, and make the instance
unusable. This is called automatically on object collection.
.. method:: Wave_read.getnchannels()
@ -139,8 +144,8 @@ Wave_write objects, as returned by :func:`.open`, have the following methods:
.. method:: Wave_write.close()
Make sure *nframes* is correct, and close the file. This method is called upon
deletion.
Make sure *nframes* is correct, and close the file if it was opened by
:mod:`wave`. This method is called upon object collection.
.. method:: Wave_write.setnchannels(n)
@ -192,6 +197,7 @@ Wave_write objects, as returned by :func:`.open`, have the following methods:
Write audio frames and make sure *nframes* is correct.
Note that it is invalid to set any parameters after calling :meth:`writeframes`
or :meth:`writeframesraw`, and any attempt to do so will raise
:exc:`wave.Error`.

View File

@ -51,9 +51,9 @@ The available exception and functions in this module are:
regardless of sign.
.. function:: compress(string[, level])
.. function:: compress(data[, level])
Compresses the data in *string*, returning a string contained compressed data.
Compresses the bytes in *data*, returning a bytes object containing compressed data.
*level* is an integer from ``1`` to ``9`` controlling the level of compression;
``1`` is fastest and produces the least compression, ``9`` is slowest and
produces the most. The default value is ``6``. Raises the :exc:`error`
@ -92,9 +92,9 @@ The available exception and functions in this module are:
regardless of sign.
.. function:: decompress(string[, wbits[, bufsize]])
.. function:: decompress(data[, wbits[, bufsize]])
Decompresses the data in *string*, returning a string containing the
Decompresses the bytes in *data*, returning a bytes object containing the
uncompressed data. The *wbits* parameter controls the size of the window
buffer. If *bufsize* is given, it is used as the initial size of the output
buffer. Raises the :exc:`error` exception if any error occurs.
@ -121,21 +121,21 @@ The available exception and functions in this module are:
Compression objects support the following methods:
.. method:: Compress.compress(string)
.. method:: Compress.compress(data)
Compress *string*, returning a string containing compressed data for at least
part of the data in *string*. This data should be concatenated to the output
Compress *data*, returning a bytes object containing compressed data for at least
part of the data in *data*. This data should be concatenated to the output
produced by any preceding calls to the :meth:`compress` method. Some input may
be kept in internal buffers for later processing.
.. method:: Compress.flush([mode])
All pending input is processed, and a string containing the remaining compressed
All pending input is processed, and a bytes object containing the remaining compressed
output is returned. *mode* can be selected from the constants
:const:`Z_SYNC_FLUSH`, :const:`Z_FULL_FLUSH`, or :const:`Z_FINISH`,
defaulting to :const:`Z_FINISH`. :const:`Z_SYNC_FLUSH` and
:const:`Z_FULL_FLUSH` allow compressing further strings of data, while
:const:`Z_FULL_FLUSH` allow compressing further bytestrings of data, while
:const:`Z_FINISH` finishes the compressed stream and prevents compressing any
more data. After calling :meth:`flush` with *mode* set to :const:`Z_FINISH`,
the :meth:`compress` method cannot be called again; the only realistic action is
@ -153,31 +153,31 @@ Decompression objects support the following methods, and two attributes:
.. attribute:: Decompress.unused_data
A string which contains any bytes past the end of the compressed data. That is,
A bytes object which contains any bytes past the end of the compressed data. That is,
this remains ``""`` until the last byte that contains compression data is
available. If the whole string turned out to contain compressed data, this is
``""``, the empty string.
available. If the whole bytestring turned out to contain compressed data, this is
``b""``, an empty bytes object.
The only way to determine where a string of compressed data ends is by actually
The only way to determine where a bytestring of compressed data ends is by actually
decompressing it. This means that when compressed data is contained part of a
larger file, you can only find the end of it by reading data and feeding it
followed by some non-empty string into a decompression object's
followed by some non-empty bytestring into a decompression object's
:meth:`decompress` method until the :attr:`unused_data` attribute is no longer
the empty string.
empty.
.. attribute:: Decompress.unconsumed_tail
A string that contains any data that was not consumed by the last
A bytes object that contains any data that was not consumed by the last
:meth:`decompress` call because it exceeded the limit for the uncompressed data
buffer. This data has not yet been seen by the zlib machinery, so you must feed
it (possibly with further data concatenated to it) back to a subsequent
:meth:`decompress` method call in order to get correct output.
.. method:: Decompress.decompress(string[, max_length])
.. method:: Decompress.decompress(data[, max_length])
Decompress *string*, returning a string containing the uncompressed data
Decompress *data*, returning a bytes object containing the uncompressed data
corresponding to at least part of the data in *string*. This data should be
concatenated to the output produced by any preceding calls to the
:meth:`decompress` method. Some of the input data may be preserved in internal
@ -186,15 +186,15 @@ Decompression objects support the following methods, and two attributes:
If the optional parameter *max_length* is supplied then the return value will be
no longer than *max_length*. This may mean that not all of the compressed input
can be processed; and unconsumed data will be stored in the attribute
:attr:`unconsumed_tail`. This string must be passed to a subsequent call to
:attr:`unconsumed_tail`. This bytestring must be passed to a subsequent call to
:meth:`decompress` if decompression is to continue. If *max_length* is not
supplied then the whole input is decompressed, and :attr:`unconsumed_tail` is an
empty string.
supplied then the whole input is decompressed, and :attr:`unconsumed_tail` is
empty.
.. method:: Decompress.flush([length])
All pending input is processed, and a string containing the remaining
All pending input is processed, and a bytes object containing the remaining
uncompressed output is returned. After calling :meth:`flush`, the
:meth:`decompress` method cannot be called again; the only realistic action is
to delete the object.