auto
  "   ˆl–äY>”ªe¶¥8 ¸.41hßÄƒh¹ÂÁ      0
     	ˆÀÄƒßÃÂÁ ÷    	
:mod:`autoGIL` --- Global Interpreter Lock handling in event loops
==================================================================

.. module:: autoGIL
   :platform: Mac
   :synopsis: Global Interpreter Lock handling in event loops.
   :deprecated:
.. moduleauthor:: Just van Rossum <just@letterror.com>


The :mod:`autoGIL` module provides a function :func:`installAutoGIL` that
automatically locks and unlocks Python's :term:`Global Interpreter Lock` when
running an event loop.

.. note::

   This module has been removed in Python 3.x.


.. exception:: AutoGILError

   Raised if the observer callback cannot be installed, for example because the
   current thread does not have a run loop.


.. function:: installAutoGIL()

   Install an observer callback in the event loop (CFRunLoop) for the current
   thread, that will lock and unlock the Global Interpreter Lock (GIL) at
   appropriate times, allowing other Python threads to run while the event loop is
   idle.

   Availability: OSX 10.1 or later.

  #   ˆÅÄƒ­¿Ãa–äY>”ªe¶¥8 Aq·.*bÑ¿Â ß    :mod:`sndhdr` --- Determine type of sound file
==============================================

.. module:: sndhdr
   :synopsis: Determine type of a sound file.
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
.. Based on comments in the module source file.

.. index::
   single: A-LAW
   single: u-LAW

**Source code:** :source:`Lib/sndhdr.py`

--------------

The :mod:`sndhdr` provides utility functions which attempt to determine the type
of sound data which is in a file.  When these functions are able to determine
what type of sound data is stored in a file, they return a tuple ``(type,
sampling_rate, channels, frames, bits_per_sample)``.  The value for *type*
indicates the data type and will be one of the strings ``'aifc'``, ``'aiff'``,
``'au'``, ``'hcom'``, ``'sndr'``, ``'sndt'``, ``'voc'``, ``'wav'``, ``'8svx'``,
``'sb'``, ``'ub'``, or ``'ul'``.  The *sampling_rate* will be either the actual
value or ``0`` if unknown or difficult to decode.  Similarly, *channels* will be
either the number of channels or ``0`` if it cannot be determined or if the
value is difficult to decode.  The value for *frames* will be either the number
of frames or ``-1``.  The last item in the tuple, *bits_per_sample*, will either
be the sample size in bits or ``'A'`` for A-LAW or ``'U'`` for u-LAW.


.. function:: what(filename)

   Determines the type of sound data stored in the file *filename* using
   :func:`whathdr`.  If it succeeds, returns a tuple as described above, otherwise
   ``None`` is returned.


.. function:: whathdr(filename)

   Determines the type of sound data stored in a file based on the file  header.
   The name of the file is given by *filename*.  This function returns a tuple as
   described above on success, or ``None``.

     ˆÆÅƒ.;Ä¾Â 	?    :mod:`smtpd` --- SMTP Server
============================

.. module:: smtpd
   :synopsis: A SMTP server implementation in Python.

.. moduleauthor:: Barry Warsaw <barry@zope.com>
.. sectionauthor:: Moshe Zadka <moshez@moshez.org>

**Source code:** :source:`Lib/smtpd.py`

--------------

This module offers several classes to implement SMTP servers.  One is a generic
do-nothing implementation, which can be overridden, while the other two offer
specific mail-sending strategies.


SMTPServer Objects
------------------


.. class:: SMTPServer(localaddr, remoteaddr)

   Create a new :class:`SMTPServer` object, which binds to local address
   *localaddr*.  It will treat *remoteaddr* as an upstream SMTP relayer.  It
   inherits from :class:`asyncore.dispatcher`, and so will insert itself into
   :mod:`asyncore`'s event loop on instantiation.


   .. method:: process_message(peer, mailfrom, rcpttos, data)

      Raise :exc:`NotImplementedError` exception. Override this in subclasses to
      do something useful with this message. Whatever was passed in the
      constructor as *remoteaddr* will be available as the :attr:`_remoteaddr`
      