%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib/python2.7/site-packages/paste/util/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyo

�
b�Nc@s�dZddlZddlZddlmZdejfd��YZdada	d�Z
d�Zd�Zea
ad	ejfd
��YZdadad�Zd�Zd
�ZdS(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PrintCatchercBs�eZd
d
d
ed�Zejd�Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d
ejd�Zd
ejd	�ZRS(cCs�|rtj}n|r'|j|_n6|r<|j|_n!|rQ|j|_n|j|_||_||_||_	i|_
dS(N(tsyststdoutt
_writedefaultt_defaultfunct
_writefactoryt_writeparamt_writeerrort_defaultt_factoryt_paramwritert	_catchers(tselftdefaulttfactorytparamwritertleave_stdout((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyt__init__Es			cCsU|�j�}|j}|j|�s:|j||�n||}|j|�dS(N(tgetNameRthas_keyRtwrite(R
tvt
currentThreadtnametcatcherstcatcher((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR\s	
cGsOtj�j�}|j}||kr:|jj|�n||j|�dS(N(t	threadingRRRR	tseek(R
targsRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyRes
	cGsOtj�j�}|j}||kr:|jj|�n||j|�dS(N(RRRRR	tread(R
RRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyRns
	cCs|jj|�dS(N(R	R(R
RR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyRwscCs|j|�j|�dS(N(R
R(R
RR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyRzscCs|j||�dS(N(R(R
RR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR}scCsdS(N((R
RR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR�scCs/|dkr|�j�}n||j|<dS(N(tNoneRR(R
RRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pytregister�scCs,|dkr|�j�}n|j|=dS(N(RRR(R
RR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyt
deregister�sN(t__name__t
__module__RtFalseRRRRRRRRRRR R!(((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyRCs										cKsKtstjtk	rGtjat|�at_tjatjandS(N(t
_printcatcherRRt
_oldstdoutRR R!(tkw((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pytinstall�s
		cCs,tr(tt_daatatandS(N(R%R&RRRtnot_installed_errorR R!(((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyt	uninstall�s
	
cOsdS(N((RR'((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR)�stStdinCatchercBsteZdddd�Zdejd�Zd�Zd�Zd�Z	d�Z
dejd�Zdejd�ZRS(	cCss|r|j|_n6|r*|j|_n!|r?|j|_n|j|_||_||_||_i|_dS(N(	t_readdefaultRt_readfactoryt
_readparamt
_readerrorR	R
RR(R
RRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR�s			cCsR|�j�}|j}|j|�s7|j||�S||}|j|�SdS(N(RRRRR(R
tsizeRRRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR�s	
cCs|jj|�dS(N(R	R(R
RR0((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR,�scCs|j|�j|�dS(N(R
R(R
RR0((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR-�scCs|j||�dS(N(t_paramreader(R
RR0((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR.�scCsdS(N((R
RR0((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR/�scCs/|dkr|�j�}n||j|<dS(N(RRR(R
RRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR �scCs,|dkr|�j�}n|j|=dS(N(RRR(R
RRR((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR!�sN(
R"R#RRRRRR,R-R.R/R R!(((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR+�s					cKs;ts7tjat|�at_tjatjandS(N(	t
_stdincatcherRtstdint	_oldstdinR+R tregister_stdinR!tderegister_stdin(R'((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyt
install_stdin�s
		cCs*tr&|t_da}taandS(N(R2RR3Rtnot_installed_error_stdinR5R6(R4((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR*�s	
cOsdS(N((RR'((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyR8�s(t__doc__RRt
paste.utilRt	FileMixinRRR%R&R(R*R)R R!R+R2R4R7R8(((sI/opt/alt/python27/lib/python2.7/site-packages/paste/util/threadedprint.pyt<module>=s P			
8		

Zerion Mini Shell 1.0