How to control app from Python?

Ionel Simionescu ionel at psy.uva.nl
Mon Nov 1 16:09:49 EST 1999


| > The app to be controlled is visual...
| > I discovered Mark Hammond's win32 stuff...


Easy would it be if the application is a DDE server or a COM server.
Check its docs.

If it is none of that, you can still approach it the hard way, that is by
getting a handle to one of its windows (through system functions) and then
sending messages to it, or even data (via a pipe).

The attachment is an example written in C for controlling Gnuplot.

The example is simple and clear enoough to give you a starting point.
The problem with it is that not all system functions used there are also
found in the win32 extensions, yet.

Succes,
ionel





begin 666 pgnuplot.c
M+RH*("H@<&=N=7!L;W0N8R M+2!P:7!E('-T9&EN('1O('=G;G5P;&]T"B J
M( H@*B!697)S:6]N(# N,R M+2 S,"!*=6X@,3DY.0H@*B *("H at 5&AI<R!P
M<F]G<F%M(&ES(&)A<V5D(&]N('!G;G5P;&]T+F, at 0V]P>7)I9VAT("A#*2 Q
M.3DY($AA;G,M0F5R;FAA<F0 at 0G)O96ME<@H@*B!W:71H('-U8G-T86YT:6%L
M(&UO9&EF:6-A=&EO;G, at 0V]P>7)I9VAT("A#*2 Q.3DY($-R86EG(%(N(%-C
M:&%R9'0N"B J"B J(%1H92!C;V1E(&ES(')E;&5A<V5D('1O('1H92!P=6)L
M:6, at 9&]M86EN+ at H@*@H@*B\*"B\J($-O;6UE;G1S(&9R;VT@;W)I9VEN86P@
M<&=N=7!L;W0N8R J+PHO*@H@*B!P9VYU<&QO="YC("TM("=0:7!E('1O(&=N
M=7!L;W0G("!697)S:6]N(#DY,#8P. H@*@H@*B!!('-M86QL('!R;V=R86TL
M('1O(&)E(&-O;7!I;&5D(&%S(&$@5VEN,S(@8V]N<V]L92!M;V1E(&%P<&QI
M8V%T:6]N+ at H@*B H3D(Z('=I;&P@;F]T('=O<FL@;VX@,39B:70 at 5VEN9&]W
M<RP@;F]T(&5V96X@=VET:"!7:6XS,G,@:6YS=&%L;&5D*2X*("H*("H at 5&AI
M<R!P<F]G<F%M('=I;&P at 86-C97!T(&-O;6UA;F1S(&]N(%-41$E.+"!A;F0@
M<&EP92!T:&5M('1O(&%N"B J(&%C=&EV92 H;W(@;F5W;'D at 8W)E871E9"D@
M=V=N=7!L;W0@=&5X="!W:6YD;W<N($-O;6UA;F0@;&EN92!O<'1I;VYS"B J
M(&%R92!P87-S960@;VX@=&\@=V=N=7!L;W0N"B J"B J($5F9F5C=&EV96QY
M+"!T:&ES(&UE86YS(&!P9VYU<&QO="<@:7, at 86X@86QM;W-T(&-O;7!L971E
M('-U8G-T:71U=&4*("H at 9F]R(&!W9VYU<&QO="<L(&]N('1H92!C;VUM86YD
M(&QI;F4L('=I=&@@=&AE(&%D9&5D(&)E;F5F:70@=&AA="!I= H@*B!D;V5S
M(&%C8V5P="!C;VUM86YD<R!F<F]M(')E9&ER96-T960@<W1D:6XN("A"96EN
M9R!A(%=I;F1O=W, at 1U5)"B J(&%P<&QI8V%T:6]N+"!@=V=N=7!L;W0G(&ET
M<V5L9B!C86YN;W0@<F5A9"!S=&1I;B!A="!A;&PN*0H@*@H@*B!#;W!Y<FEG
M:'0@*$,I(#$Y.3D at 8GD@2&%N<RU"97)N:&%R9"!"<F]E:V5R"B J(" @(" @
M(" @(" @(" @(" @(" @(" H8G)O96ME<D!P:'ES:6LN<G=T:"UA86-H96XN
M9&4I"B J(%1H:7, at 9FEL92!I<R!I;B!T:&4@<'5B;&EC(&1O;6%I;BX at 270@
M;6EG:'0 at 8F5C;VUE('!A<G0@;V8 at 82!F=71U<F4*("H at 9&ES=')I8G5T:6]N
M(&]F(&=N=7!L;W0N"B J"B J(&)A<V5D(&]N(&$@<')O9W)A;2!P;W-T960@
M=&\@8V]M<"YG<F%P:&EC<RYA<'!S+F=N=7!L;W0@:6X at 36%Y(#$Y.3@@8GD*
M("H@:FP at 2&%M96P@/&IL:&%M96Q 8V5A+F9R/@H@*@H@*B!#:&%N9V5S(')E
M;&%T:79E('1O('1H870@;W)I9VEN86P@=F5R<VEO;CH*("H at +2T@9&]E<VXG
M="!S=&%R="!A(&YE=R!W9VYU<&QO="!I9B!O;F4 at 86QR96%D>2!I<R!R=6YN
M:6YG+ at H@*B M+2!D;V5S;B=T(&5N9"!U<"!I;B!A;B!E;F1L97-S(&QO;W @
M:68 at 4U1$24X@:7,@;F]T(')E9&ER96-T960N"B J(" @("AR969U<V5S('1O
M(')E860 at 9G)O;2!35$1)3B!A="!A;&PL(&EN('1H870 at 8V%S92DN"B J("TM
M(&1O97-N)W0@<W1O<"!T:&4@=V=N=7!L;W0@<V5S<VEO;B!A="!T:&4 at 96YD
M(&]F"B J(" @('-T9&EN+"!I9B!I="!D:61N)W0@<W1A<G0@=V=N=7!L;W0@
M:71S96QF+ at H@*B M+2!A=F]I9',@=&AE('5S=6%L(&)U9F9E<B!O=F5R<G5N
M('!R;V)L96T@=VET:"!G971S*"DN"B J"B J($9O<B!T:&4@<F5C;W)D+"!)
M('5S=6%L;'D@=7-E($UI;D=7,S(@=&\@8V]M<&EL92!T:&ES+"!W:71H(&$*
M("H at 8V]M;6%N9"!L:6YE(&QO;VMI;F<@;&EK92!T:&ES. at H@*@H@*B @(" @
M9V-C("UO('!G;G5P;&]T+F5X92!P9VYU<&QO="YC("UL=7-E<C,R("US"B J
M+PH*+RH)36]D:69I8V%T:6]N<R!B>2!#<F%I9R!2+B!38VAA<F1T("@Q-R!*
M=6X@,3DY.2D*"0D*"4-O<'ER:6=H=" H0RD@,3DY.2!B>2!#<F%I9R!2+B!3
M8VAA<F1T("AC<F%I9T!S:6QI8V$N;7-E+G5F;"YE9'4I"@H)36%J;W(@8VAA
M;F=E<SH@*%-E92!T:&4 at 97AP;&%N871I;VX at 8F5L;W<@9F]R(&UO<F4@:6YF
M;W)M871I;VXI"@D)*R!!;'=A>7,@<W1A<G1S(&$@;F5W(&EN<W1A;F-E(&]F
M('=G;G5P;&]T+ at H)"2L at 268@<W1D:6X@:7-N)W0@<F5D:7)E8W1E9"!T:&5N
M('-T87)T('=G;G5P;&]T(&%N9"!G:79E(&ET(&9O8W5S+ at H)"2L at 57-E<R!#
M<F5A=&50<F]C97-S*"D@:6YS=&5A9"!O9B!7:6Y%>&5C*"D@=&\@<W1A<G0@
M=V=N=7!L;W0@=VAE;B!S=&1I;@H)"2 @:7,@<F5D:7)E8W1E9"X*"0H)3W1H
M97(@8VAA;F=E<SH*"0DK($YE=R!T96-H;FEQ=64 at 9F]R(&)U:6QD:6YG('1H
M92!C;VUM86YD(&QI;F4@=&\@<&%S<R!T;R!W9VYU<&QO="YE>&4*"0D@('=H
M:6-H(&ES(&QE<W, at 8V]M<&QI8V%T960 at 86YD('-E96US('1O('=O<FL@;6]R
M92!R96QI86)L>2!T:&%N('1H92!O;&0@"@D)("!T96-H;FEQ=64N"@D)*R!3
M:6UP;&EF:65D(&UE<W-A9V4@<&%S<VEN9R!S96-T:6]N(&]F('1H92!C;V1E
M+B *"0DK($%L;"!P<FEN=&8H+BXN*2!S=&%T96UE;G1S(&%R92!N;W<@9G!R
M:6YT9BAS=&1E<G(L+BXN*2!S;R!T:&%T(&5R<F]R<R *"0D@(&%R92!S96YT
M('1O('1H92!C;VYS;VQE+"!E=F5N(&EF('-T9&]U="!I<R!R961I<F5C=&5D
M+ at H*"51H92!P<F5V:6]U<R!V97)S:6]N(&]F('!G;G5P;&]T('=O=6QD(&9A
M:6P@=VAE;B!M;W)E('1H86X@;VYE('!R;V=R86T*"71R:65D('1O(&%C8V5S
M<R!W9VYU<&QO="!S:6UU;'1A;F5O=7-L>2!O<B!W:&5N(&]N92!P<F]G<F%M
M('1R:65D('1O('-T87)T"@EM;W)E('1H86X@;VYE('=G;G5P;&]T('-E<W-I
M;VXN($]N;'D at 82!S:6YG;&4@:6YS=&%N8V4@;V8@=V=N=7!L;W0@=V]U;&0@
M8F4*"7-T87)T960 at 86YD(&%L;"!I;G!U="!W;W5L9"!B92!S96YT('1O('1H
M870@:6YS=&%N8V4N(%=H96X@='=O(&]R(&UO<F4@<')O9W)A;7,*"71R:65D
M('1O('!I<&4@:6YP=70@=&\@=V=N=7!L;W0L('1H92!T=V\@<V5P97)A=&4@
M:6YP=70@<W1R96%M<R!W;W5L9"!B92!S96YT( H)=&\@;VYE('=G;G5P;&]T
M('=I;F1O=R!R97-U;'1I;F<@:6X@;VYE('9E<GD at 8V]N9G5S960 at 8V]P>2!O
M9B!W9VYU<&QO="X at 5&AE(&]N;'D*"7=A>2!T;R!A=F]I9"!T:&ES('!R;V)L
M96T@=V%S('1O(&-H86YG92!P9VYU<&QO="!S;R!T:&%T(&ET('=O=6QD('-T
M87)T(&$@"@EN97<@:6YS=&%N8V4@;V8@=V=N=7!L;W0 at 979E<GD@=&EM92X*
M"@E*=7-T('-T87)T:6YG(&$@;F5W(&EN<W1A;F-E(&]F('=G;G5P;&]T(&ES
M;B=T(&5N;W5G:"X@<&=N=7!L;W0@;75S="!A;'-O"@EM86ME('-U<F4@=&AA
M="!T:&4 at 9&%T82!O;B!E86-H('-T9&EN('!I<&4@:7,@<V5N="!T;R!T:&4@
M<')O<&5R('=G;G5P;&]T( H):6YS=&%N8V4N(%1H:7,@:7, at 86-H:65V960@
M8GD@=7-I;F<@0W)E871E4')O8V5S<R at I('=H:6-H(')E='5R;G, at 82!H86YD
M;&4@"@ET;R!T:&4@;F5W;'D at 8W)E871E9"!P<F]C97-S+B!/;F-E('1H92!P
M<F]C97-S(&AA<R!I;FET:6%L:7IE9"P@:70 at 8V%N(&)E( H)<V5A<F-H960@
M9F]R('1H92!T97AT('=I;F1O=R!A;F0@=&AE;B!D871A(&-A;B!B92!R;W5T
M960 at 8V]R<F5C=&QY+B!4:&4@<V5A<F-H( H):7, at 8V%R<FEE9"!O=70 at 8GD@
M=&AE($5N=6U4:')E8617:6YD;W=S*"D at 8V%L;"!A;F0@=&AE(&1A=&$@<&%S
M<VEN9R!I<R!C87)R:65D( H);W5T(&)Y(&$@<F5W<FET=&5N('9E<G-I;VX@
M;V8@=&AE(&]R:6=I;F%L(&-O9&4N(%=I=&@@=&AE<V4 at 8VAA;F=E<RP@<&=N
M=7!L;W0@"@EN;W<@8F5H879E<R!I;B!A(&UA;FYE<B!C;VYS:7-T96YT('=I
M=&@@=&AE(&)E:&%V:6]R(&]F(&=N=7!L;W0@;VX at 54Y)6" *"6-O;7!U=&5R
M<RX*"@E4:&ES('!R;V=R86T@:&%S(&)E96X at 8V]M<&EL960@=7-I;F<@36EC
M<F]S;V9T(%9I<W5A;"!#*RL at -"XP('=I=&@@=&AE"@EF;VQL;W=I;F<@8V]M
M;6%N9"!L:6YE. at H*"0EC;" O3S(@<&=N=7!L;W0N8R O;&EN:R!U<V5R,S(N
M;&EB"@H)5&AE(')E<W5L=&EN9R!P<F]G<F%M(&AA<R!B965N('1E<W1E9"!O
M;B!7:6Y.5"!A;F0 at 5VEN.3@@8F]T:"!B>2!C86QL:6YG"@EI="!D:7)E8W1L
M>2!F<F]M('1H92!C;VUM86YD(&QI;F4@=VET:"!A;F0@=VET:&]U="!R961I
M<F5C=&5D(&EN<'5T+B!4:&4*"7!R;V=R86T at 86QS;R!W;W)K<R!O;B!7:6Y.
M5"!W:71H(&$@;6]D:69I960@=F5R<VEO;B!O9B!';G5P;&]T+G!Y("AA('-C
M<FEP= H)9F]R(&EN=&5R86-T:79E(&-O;G1R;VP@;V8 at 1VYU<&QO="!F<F]M
M(%!Y=&AO;BDN( H)"@DR,B!*54X@,3DY.3H*"2L at 1FEX960@8V]M;6%N9"!L
M:6YE(&-O9&4@=&\@8F5H879E('!R;W!E<FQY('=H96X@=&AE(&9I<G-T"@D@
M(&ET96T@:7,@<75O=&5D(&EN('1H92!O<FEG:6YA;"!C;VUM86YD(&QI;F4N
M"@D*"3(Y($I53B Q.3DY. at H)*R!!9&1E9"!S;VUE(&-O9&4@=&\@<')I;G0@
M=&AE(&-O;6UA;F0@;&EN92X at 5&AI<R!I<R!F;W(@=&5S=&EN9PH)("!O;FQY
M(&%N9"!S:&]U;&0 at 8F4@<F5M;W9E9"!B969O<F4@=&AE(&=E;F5R86P@<F5L
M96%S92X at 5&\@96YA8FQE+" *"2 @8V]M<&EL92!W:71H(%-(3U=#341,24Y%
M(&1E9FEN960N"@H),S @2E5.(#$Y.3DZ"@DK($YE=R!F=6YC=&EO;B!&:6YD
M56YQ=6]T9613<&%C92 at I('=H:6-H(')E<&QA8V5S('1H92!E87)L:65R('1E
M8VAN:7%U92!F;W(*"2 @9FEN9&EN9R!T:&4 at 8V]M;6%N9"!L:6YE(&%R9W5M
M96YT<R!T;R!S96YD(&]N('1O('=G;G5P;&]T+B!0<FEO<B!T;R!T:&ES"@D@
M('1H92!A<F=U;65N=',@=V5R92!A<W-U;65D('1O('-T87)T(&%F=&5R(&%R
M9W9;,%TL(&AO=V5V97(@87)G=ELP72!I<R!N;W0*"2 @<V5T('1H92!S86UE
M(&)Y(&%L;"!C;VUB:6YI=&%I;VYS(&]F(&-O;7!I;&5R+"!C;VUM86YD('!R
M;V-E<W-O<BP at 86YD($]3+B *"2 @5&AE(&YE=R!M971H;V0@:6=N;W)E<R!A
M<F=V(&-O;7!L971E;'D at 86YD(&UA;G5A;&QY('-E87)C:"!T:&4 at 8V]M;6%N
M9"!L:6YE"@D@('-T<FEN9R!F;W(@=&AE(&9I<G-T('-P86-E('=H:6-H(&ES
M;B=T(&5N8VQO<V5D(&EN(&1O=6)L92UQ=6]T97,N"@H@("HO"@HC:6YC;'5D
M92 \:6\N:#X*(VEN8VQU9&4@/&-O;FEO+F@^"B-I;F-L=61E(#QF8VYT;"YH
M/@HC:6YC;'5D92 \<W1D:6\N:#X*(VEN8VQU9&4@/'-T<FEN9RYH/@HC:6YC
M;'5D92 \<W1D;&EB+F@^"B-I;F-L=61E(#QW:6YD;W=S+F@^"@HO*B!#=7-T
M;VUI>F4@=&AI<R!P871H(&EF(&YE961E9" J+PHC9&5F:6YE(%!23T=.04U%
M(")W9VYU<&QO="YE>&4B"B\J($-24SH at 5&AE('9A;'5E(&=I=F5N(&%B;W9E
M('=I;&P@=V]R:R!C;W)R96-T;'D at 87,@;&]N9R!A<R!P9VYU<&QO="YE>&4*
M("H@:7,@:6X@=&AE('-A;64 at 9&ER96-T;W)Y(&%S('=G;G5P;&]T+F5X92!O
M<B!T:&4 at 9&ER96-T;W)Y(&-O;G1A:6YI;F<*("H@=V=N=7!L;W0N97AE(&ES
M(&EN8VQU9&5D(&EN('1H92!P871H+B!)('=O=6QD(')E8V]M;65N9"!P;&%C
M:6YG('1H92 *("H@<&=N=7!L;W0N97AE(&5X96-U=&%B;&4@:6X@=&AE('-A
M;64 at 9&ER96-T;W)Y(&%S('=G;G5P;&]T+F5X92!A;F0@"B J(&QE879I;F<@
M=&AI<R!D969I;FET:6]N(&%L;VYE+ at H@*B\*"B-D969I;F4 at 5TE.1$]73D%-
M12 B9VYU<&QO="(*(V1E9FEN92!005)%3E1#3$%34R B=V=N=7!L;W1?<&%R
M96YT(@HC9&5F:6YE(%1%6%1#3$%34R B=V=N=7!L;W1?=&5X="(*(V1E9FEN
M92!'4D%02%=)3D1/5R B9VYU<&QO="!G<F%P:"(*(V1E9FEN92!'4D%02$-,
M05-3(")W9VYU<&QO=%]G<F%P:"(*(V1E9FEN92!"549&15)?4TE:12 X, H*
M+RH at 1TQ/0D%,(%9A<FEA8FQE<R J+PI(5TY$(&AW;F1087)E;G0@/2!.54Q,
M.PI(5TY$(&AW;F1497AT(#T at 3E5,3#L*"E!23T-%4U-?24Y&3U)-051)3TX@
M<&E0<F]C26YF;SL@"E-405)455!)3D9/(" @(" @(" @<VE3=&%R=$EN9F\[
M( H*+RH at 0U)3.B!#86QL8F%C:R!F;W(@=&AE($5N=6U4:')E8617:6YD;W=S
M(&9U;F-T:6]N("HO"D)/3TP at 0T%,3$)!0TL at 8V)'971497AT5VEN9&]W*$A7
M3D0@(&AW;F0L($Q005)!32 @;%!A<F%M("D*>PH)+RH@<V%V92!T:&4@=F%L
M=64@;V8@=&AE('!A<F5N="!W:6YD;W<@*B\*"6AW;F1087)E;G0@/2!H=VYD
M.PH)+RH at 8VAE8VL@=&\@<V5E(&EF(&ET(&AA<R!A(&-H:6QD('1E>'0@=VEN
M9&]W("HO"@EH=VYD5&5X=" ]($9I;F17:6YD;W=%>"AH=VYD+"!.54Q,+"!4
M15A40TQ!4U,L($Y53$P@*3L*"@DO*B!I9B!T:&4@=&5X="!W:6YD;W<@=V%S
M(&9O=6YD+"!S=&]P(&QO;VMI;F<@*B\*"7)E='5R;B H(&AW;F1497AT("$]
M($Y53$P@*3L*?0H*+RH@<V5N9', at 82!S=')I;F<@=&\@=&AE('-P96-I9FEE
M9"!W:6YD;W<@*B\*+RH at 0U)3.B!M861E('1H:7,@:6YT;R!A(&9U;F-T:6]N
M(&-A;&P@*B\*=F]I9"!0;W-T4W1R:6YG*$A73D0@:'=N9"P at 8VAA<B J<&,I
M"GL*"7=H:6QE*" J<&,@*7L*"0E0;W-T365S<V%G92@@:'=N9"P at 5TU?0TA!
M4BP@*G!C+" Q3" I.PH)"2\J($-24SH@<VAO=6QD(&%D9"!A(&-H96-K(&]F
M(')E='5R;B!C;V1E(&]N(%!O<W1-97-S86=E+B!)9B P+"!T:&4@"@D)(" @
M;65S<V%G92!Q=64@=V%S(&9U;&P at 86YD('1H92!M97-S86=E('=A<VXG="!P
M;W-T960N("HO"@D)<&,K*SL*"7T*?0H*+RH at 1FEN9%5N<75O=&5D4W!A8V4H
M*3H at 4V5A<F-H(&$@<W1R:6YG(&9O<B!T:&4 at 9FER<W0@<W!A8V4@;F]T(&5N
M8VQO<V5D(&EN('%U;W1E<RX*("H@("!2971U<FYS(&$@<&]I;G1E<B!T;R!T
M:&4@<W!A8V4L(&]R('1H92!E;7!T>2!S=')I;F<@:68@;F\@<W!A8V4@:7,@
M9F]U;F0N( H@*B @("U#4E,@,S P-C$Y.3D@( H@*B\*8VAA<BH at 1FEN9%5N
M<75O=&5D4W!A8V4H(&-H87(@*G!C("D*>PH)=VAI;&4@*" H*G!C*2 F)B H
M*G!C("$]("<@)RD@)B8@*"IP8R A/2 G7'0G*2 I>PH)"6EF("@@*G!C(#T]
M("<B)R I>PH)"0ED;R!["@D)"0EP8RLK.PH)"0E]('=H:6QE("@@*'!C6S%=
M*2 F)B H*G!C("$]("<B)RD@*3L*"0E]"@D)<&,K*SL*"7T*"7)E='5R;B!P
M8SL*?0H*:6YT(&UA:6X@*&EN="!A<F=C+"!C:&%R("IA<F=V6UTI"GL*"6-H
M87(@(" @<'-"=69F97);0E5&1D527U-)6D5=.PH)8VAA<B @("!P<T=N=7!L
M;W1#;VUM86YD3&EN95M-05A?4$%42%T@/2!04D]'3D%-13L*"4Q05%-44B @
M<'-#;61,:6YE(#T at 3E5,3#L*"4)/3TP@(" @8E-U8V-E<W,@/2!&04Q313L*
M"0H)+RH at 2$)"(#$Y.3DP,S(U+"!T;R!A;&QO=R!P9VYU<&QO=" \('-C<FEP
M=" ^(&]U='!U="YG:68@*B\*"5]S971M;V1E*&9I;&5N;RAS=&1O=70I+"!?
M3U]"24Y!4EDI.PH*"2\J($-24SH at 8W)E871E('1H92!N97<@8V]M;6%N9"!L
M:6YE+"!P87-S:6YG(&%L;"!O9B!T:&4 at 8V]M;6%N9 H)("H@;&EN92!O<'1I
M;VYS('1O('=G;G5P;&]T('-O('1H870@:70 at 8V%N('!R;V-E<W,@=&AE;3H*
M"2 J(&9I<G-T+"!G970@=&AE(&-O;6UA;F0@;&EN92P*"2 J('1H96X@;6]V
M92!P87-T('1H92!N86UE(&]F('1H92!P<F]G<F%M("AE+F<N+" G<&=N=7!L
M;W0G*2P*"2 J(&9I;F%L;'DL(&%D9"!W:&%T)W,@;&5F="!O9B!T:&4@;&EN
M92!O;G1O('1H92!G;G5P;&]T(&-O;6UA;F0@;&EN92X@*B\*"7!S0VUD3&EN
M92 ]($=E=$-O;6UA;F1,:6YE*"D["@HC:69D968 at 4TA/5T--1$Q)3D4*"69P
M<FEN=&8H<W1D97)R+")#;61,:6YE.B E<UQN(BP@<'-#;61,:6YE*3L*"69P
M<FEN=&8H<W1D97)R+")A<F=V6S!=.B E<UQN(BQA<F=V6S!=*3L*(V5N9&EF
M"@H)+RH at 0U)3(#,P,#8Q.3DY.B!396%R8V@@9F]R('1H92!F:7)S="!U;G%U
M;W1E9"!S<&%C92X at 5&AI<R!S:&]U;&0@"@D@("!S97!A<F%T92!T:&4@<')O
M9W)A;2!N86UE(&9R;VT@=&AE(&%R9W5M96YT<RX@*B\*"7!S0VUD3&EN92 ]
M($9I;F15;G%U;W1E9%-P86-E*"!P<T-M9$QI;F4@*3L*"@ES=')N8V%T*'!S
M1VYU<&QO=$-O;6UA;F1,:6YE+"!P<T-M9$QI;F4L($U!6%]0051(("T@<W1R
M;&5N*'!S1VYU<&QO=$-O;6UA;F1,:6YE*2D["@HC:69D968 at 4TA/5T--1$Q)
M3D4*"69P<FEN=&8H<W1D97)R+")!<F=U;65N=',Z("5S7&XB+"!P<T-M9$QI
M;F4I.PH)9G!R:6YT9BAS=&1E<G(L(D=N=7!L;W1#;VUM86YD3&EN93H@)7-<
M;B(L<'-';G5P;&]T0V]M;6%N9$QI;F4I.PHC96YD:68*"@DO*B!#4E,Z(&EF
M('-T9&EN(&ES;B=T(')E9&ER96-T960@=&AE;B!J=7-T(&QA=6YC:"!W9VYU
M<&QO="!N;W)M86QL>0H)("H at 86YD(&5X:70N("HO"@EI9B H(&ES871T>2AF
M:6QE;F\H<W1D:6XI*2 I('L*"0EI9B H(%=I;D5X96,H<'-';G5P;&]T0V]M
M;6%N9$QI;F4L(%-77U-(3U=$149!54Q4*2 ^(#,Q("E["@D)"65X:70H15A)
M5%]354-#15-3*3L*"0E]"@D)9G!R:6YT9BAS=&1E<G(L(D524D]2("5U.B!#
M;W5L9&XG="!E>&5C=71E.B!<(B5S7")<;B(L( H)"0D@(" @1V5T3&%S=$5R
M<F]R*"DL('!S1VYU<&QO=$-O;6UA;F1,:6YE*3L*"0EE>&ET*$58251?1D%)
M3%5212D["@E]"@H)+RH at 0U)3.B!I;FET:6%L:7IE('1H92!35$%25%5024Y&
M3R!A;F0 at 8V%L;"!#<F5A=&50<F]C97-S*"DN("HO( H)<VE3=&%R=$EN9F\N
M8V(@/2!S:7IE;V8H4U1!4E154$E.1D\I.R *"7-I4W1A<G1);F9O+FQP4F5S
M97)V960@/2!.54Q,.R *"7-I4W1A<G1);F9O+FQP4F5S97)V960R(#T at 3E5,
M3#L@"@ES:5-T87)T26YF;RYC8E)E<V5R=F5D,B ](# [( H)<VE3=&%R=$EN
M9F\N;'!$97-K=&]P(#T at 3E5,3#L@"@ES:5-T87)T26YF;RYD=T9L86=S(#T@
M4U1!4E1&7U5315-(3U=724Y$3U<["@ES:5-T87)T26YF;RYW4VAO=U=I;F1O
M=R ](%-77U-(3U=-24Y)34E:140["@H)8E-U8V-E<W,@/2!#<F5A=&50<F]C
M97-S*" *"0D)3E5,3"P@(" @(" @(" @(" @(" @(" @+RH@<&]I;G1E<B!T
M;R!N86UE(&]F(&5X96-U=&%B;&4@;6]D=6QE(" @*B\*"0D)<'-';G5P;&]T
M0V]M;6%N9$QI;F4L(" @+RH@<&]I;G1E<B!T;R!C;VUM86YD(&QI;F4@<W1R
M:6YG(" @(" @(" @*B\*"0D)3E5,3"P@(" @(" @(" @(" @(" @(" @+RH@
M<&]I;G1E<B!T;R!P<F]C97-S('-E8W5R:71Y(&%T=')I8G5T97,@*B\*"0D)
M3E5,3"P@(" @(" @(" @(" @(" @(" @+RH@<&]I;G1E<B!T;R!T:')E860@
M<V5C=7)I='D at 871T<FEB=71E<R @*B\*"0D)1D%,4T4L(" @(" @(" @(" @
M(" @(" @+RH@:&%N9&QE(&EN:&5R:71A;F-E(&9L86<@(" @(" @(" @(" @
M(" @*B\*"0D),"P@(" @(" @(" @(" @(" @(" @(" @+RH at 8W)E871I;VX@
M9FQA9W,@(" @(" @(" @(" @(" @(" @(" @(" @*B\*"0D)3E5,3"P@(" @
M(" @(" @(" @(" @(" @+RH@<&]I;G1E<B!T;R!N97<@96YV:7)O;FUE;G0@
M8FQO8VL@(" @(" @*B\*"0D)3E5,3"P@(" @(" @(" @(" @(" @(" @+RH@
M<&]I;G1E<B!T;R!C=7)R96YT(&1I<F5C=&]R>2!N86UE(" @(" @*B\*"0D)
M)G-I4W1A<G1);F9O+" @(" @(" @(" @+RH@<&]I;G1E<B!T;R!35$%25%50
M24Y&3R @(" @(" @(" @(" @(" @*B\*"0D))G!I4')O8TEN9F\@(" @(" @
M(" @(" @+RH@<&]I;G1E<B!T;R!04D]#15-37TE.1D]234%424].(" @(" @
M(" @*B\*"0D)*3L*"@DO*B!I9B!#<F5A=&50<F]C97-S*"D at 9F%I;&5D+"!P
M<FEN="!A('=A<FYI;F<@86YD(&5X:70N("HO"@EI9B H("$@8E-U8V-E<W,@
M*2!["@D)9G!R:6YT9BAS=&1E<G(L(D524D]2("5U.B!#;W5L9&XG="!E>&5C
M=71E.B!<(B5S7")<;B(L( H)"0D)"0E'971,87-T17)R;W(H*2P@<'-';G5P
M;&]T0V]M;6%N9$QI;F4I.PH)"65X:70H15A)5%]&04E,55)%*3L*"7T*"@DO
M*B!#4E,Z(&=I=F4 at 9VYU<&QO="!E;F]U9V@@=&EM92!T;R!S=&%R=" H,2!S
M96,N*2 J+PH):68@*"!786ET1F]R26YP=71)9&QE*'!I4')O8TEN9F\N:%!R
M;V-E<W,L(#$P,# I("D@>PH)"69P<FEN=&8H<W1D97)R+" B5&EM96]U=#H@
M9VYU<&QO="!I<R!N;W0@<F5A9'E<;B(I.PH)"65X:70H15A)5%]&04E,55)%
M*3L*"7T*"@DO*B!#4E,Z(&=E="!T:&4 at 2%=.1"!O9B!T:&4@<&%R96YT('=I
M;F1O=R!A;F0@=&5X="!W:6YD;W=S("HO"@E%;G5M5&AR96%D5VEN9&]W<RAP
M:5!R;V-);F9O+F1W5&AR96%D260L(&-B1V5T5&5X=%=I;F1O=RP@,"D["@H)
M+RH at 0U)3.B!F<F5E('1H92!P<F]C97-S(&%N9"!T:')E860@:&%N9&QE<R J
M+PH)0VQO<V5(86YD;&4H<&E0<F]C26YF;RYH4')O8V5S<RD["@E#;&]S94AA
M;F1L92AP:5!R;V-);F9O+FA4:')E860I.PH*"6EF("@@(2!H=VYD4&%R96YT
M('Q\("$@:'=N9%1E>'0@*2!["@DO*B!3=&EL;"!N;R!G;G5P;&]T('=I;F1O
M=S\@4')O8FQE;2$@*B\*"0EF<')I;G1F*'-T9&5R<BP@(D-A;B=T(&9I;F0@
M=&AE(&=N=7!L;W0@=VEN9&]W(BD["@D)97AI="A%6$E47T9!24Q54D4I.PH)
M?0H*"2\J('=A:70 at 9F]R(&-O;6UA;F1S(&]N('-T9&EN+"!A;F0@<&%S<R!T
M:&5M(&]N('1O('1H92!W9VYU<&QO="!T97AT"@D@*B!W:6YD;W<@*B\*"7=H
M:6QE("@@9F=E=',H<'-"=69F97(L($)51D9%4E]325I%+"!S=&1I;BD@(3T@
M3E5,3" I('L*"0E0;W-T4W1R:6YG*&AW;F1497AT+"!P<T)U9F9E<BD["@E]
M"@D*"2\J(&5X:70 at 9W)A8V5F=6QL>2 J+PH)+RH at 0U)3.B!!9&0 at 82!T97-T
M('1O('-E92!I9B!G;G5P;&]T(&ES('-T:6QL(')U;FYI;F<_("HO"@E0;W-T
M4W1R:6YG*&AW;F1497AT+" B7&YE>&ET7&XB*3L*"@ER971U<FX at 15A)5%]3
*54-#15-3.PI]"@``
`
end





More information about the Python-list mailing list