PIPE stands for Python Interactive Process Enabler. It provides Expect-like functionality for Python using object-oriented constructs. PIPE was written by John F. Croix (John.Croix@taveren.com or jcroix@mindspring.com). This is version 1.0 of PIPE. The PIPE distribution consists of the following two files: * pipe-1.0.README (this file) * pipe-1.0.tgz (a tar'ed, gzip'ed file) The source code and documentation can be found in pipe-1.0.tgz and consists of the following: -rw-r--r-- 1001/10 5460 Aug 13 23:51 ./pipe-1.0/accurate_time.h -rw-r--r-- 1001/10 4363 Aug 13 23:45 ./pipe-1.0/pipe-1.0.README -rw-r--r-- 1001/10 2288 Aug 13 23:51 ./pipe-1.0/builtins.C -rw-r--r-- 1001/10 17900 Aug 13 23:51 ./pipe-1.0/pipe.py -rw-r--r-- 1001/10 17366 Aug 13 23:51 ./pipe-1.0/pipe_ext_type.C -rw-r--r-- 1001/10 17810 Aug 13 23:51 ./pipe-1.0/pipe_process.C -rw-r--r-- 1001/10 3685 Aug 13 23:51 ./pipe-1.0/pipe_process.h -rw-r--r-- 1001/10 5872 Aug 13 23:51 ./pipe-1.0/pipe_pty.C -rw-r--r-- 1001/10 2619 Aug 13 23:51 ./pipe-1.0/pipe_pty.h -rwxr-xr-x 1001/10 2327 Aug 13 23:51 ./pipe-1.0/test-default -rwxr-xr-x 1001/10 3257 Aug 13 23:51 ./pipe-1.0/test-echo -rwxr-xr-x 1001/10 2326 Aug 13 23:51 ./pipe-1.0/test-eof -rwxr-xr-x 1001/10 2689 Aug 13 23:51 ./pipe-1.0/test-full-buffer -rwxr-xr-x 1001/10 2317 Aug 13 23:51 ./pipe-1.0/test-interact -rwxr-xr-x 1001/10 2733 Aug 13 23:51 ./pipe-1.0/test-line-regex -rwxr-xr-x 1001/10 2733 Aug 13 23:51 ./pipe-1.0/test-regex -rwxr-xr-x 1001/10 2894 Aug 13 23:51 ./pipe-1.0/test-timeout drwxr-xr-x 1001/10 0 Aug 13 23:52 ./pipe-1.0/doc/ -rw-r--r-- 1001/10 230 Aug 13 23:52 ./pipe-1.0/doc/html.macros -rw-r--r-- 1001/10 7899 Aug 13 23:52 ./pipe-1.0/doc/html.sty -rw-r--r-- 1001/10 5503 Aug 13 23:52 ./pipe-1.0/doc/inheritance.eps -rw-r--r-- 1001/10 1215 Aug 13 23:52 ./pipe-1.0/doc/inheritance.fig -rw-r--r-- 1001/10 368 Aug 13 23:52 ./pipe-1.0/doc/latex.macros -rw-r--r-- 1001/10 4867 Aug 13 23:52 ./pipe-1.0/doc/match-line.eps -rw-r--r-- 1001/10 1611 Aug 13 23:52 ./pipe-1.0/doc/match-line.fig -rw-r--r-- 1001/10 7192 Aug 13 23:52 ./pipe-1.0/doc/overview.eps -rw-r--r-- 1001/10 2810 Aug 13 23:52 ./pipe-1.0/doc/overview.fig -rw-r--r-- 1001/10 6246 Aug 13 23:52 ./pipe-1.0/doc/pipe.aux -rw-r--r-- 1001/10 85968 Aug 13 23:52 ./pipe-1.0/doc/pipe.dvi -rw-r--r-- 1001/10 2516 Aug 13 23:52 ./pipe-1.0/doc/pipe.idx -rw-r--r-- 1001/10 303 Aug 13 23:52 ./pipe-1.0/doc/pipe.ilg -rw-r--r-- 1001/10 401 Aug 13 23:52 ./pipe-1.0/doc/pipe.ind -rw-r--r-- 1001/10 516 Aug 13 23:52 ./pipe-1.0/doc/pipe.lof -rw-r--r-- 1001/10 6076 Aug 13 23:52 ./pipe-1.0/doc/pipe.log -rw-r--r-- 1001/10 572759 Aug 13 23:52 ./pipe-1.0/doc/pipe.ps -rw-r--r-- 1001/10 54144 Aug 13 23:52 ./pipe-1.0/doc/pipe.tex -rw-r--r-- 1001/10 3785 Aug 13 23:52 ./pipe-1.0/doc/pipe.toc ------------------------------------------------------------------------------- CHANGES ------------------------------------------------------------------------------- V1.0: Fixed a race condition when reading data line by line. Sometimes the current data in the buffer wouldn't have a carriage return in it to distinguish an end-of-line. The code would read more data from the subprocess. The bug is that, even with this new data, there may still not be a carriage return in the data. The old code simply tried once to get new data. The new code loops until some type of error condition is detected (ie TIMEOUT) or until a carriage return can be found. Added functions MatchLineAfter() and MatchLineBefore() to supply patterns which should be matched after and before any other patterns when performing line-by-line pattern matching. Originally the code used the patterns supplied by MatchAfter() and MatchBefore(). The problem was that it wasn't necessarily possible to use the same regular expression when matching line-by-line as it was when matching against the entire input stream. Now the two are separate from each other.