File: //proc/self/root/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyo
�
b�Nc @ s� d Z d d l Z d d l Z d d l m Z d e j f d � � YZ d a d a d � Z
d � Z d � Z e a
a d e j f d
� � YZ d a d a d � Z d � Z d
� Z d S( s�
threadedprint.py
================
:author: Ian Bicking
:date: 12 Jul 2004
Multi-threaded printing; allows the output produced via print to be
separated according to the thread.
To use this, you must install the catcher, like::
threadedprint.install()
The installation optionally takes one of three parameters:
default
The default destination for print statements (e.g., ``sys.stdout``).
factory
A function that will produce the stream for a thread, given the
thread's name.
paramwriter
Instead of writing to a file-like stream, this function will be
called like ``paramwriter(thread_name, text)`` for every write.
The thread name is the value returned by
``threading.currentThread().getName()``, a string (typically something
like Thread-N).
You can also submit file-like objects for specific threads, which will
override any of these parameters. To do this, call ``register(stream,
[threadName])``. ``threadName`` is optional, and if not provided the
stream will be registered for the current thread.
If no specific stream is registered for a thread, and no default has
been provided, then an error will occur when anything is written to
``sys.stdout`` (or printed).
Note: the stream's ``write`` method will be called in the thread the
text came from, so you should consider thread safety, especially if
multiple threads share the same writer.
Note: if you want access to the original standard out, use
``sys.__stdout__``.
You may also uninstall this, via::
threadedprint.uninstall()
TODO
----
* Something with ``sys.stderr``.
* Some default handlers. Maybe something that hooks into `logging`.
* Possibly cache the results of ``factory`` calls. This would be a
semantic change.
i����N( t filemixint PrintCatcherc B s� e Z d
d
d
e d � Z e j d � Z d � Z d � Z d � Z
d � Z d � Z d � Z
d
e j d � Z d
e j d � Z RS( c C s� | r t j } n | r'