Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!newsreader4.netcologne.de!news.netcologne.de!xlned.com!feeder7.xlned.com!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.026 X-Spam-Evidence: '*H*': 0.95; '*S*': 0.00; 'affected': 0.07; 'explicit': 0.07; 'subject:code': 0.07; '22,': 0.09; 'executed': 0.09; 'linear': 0.09; 'oop': 0.09; 'statements': 0.09; 'python': 0.11; 'question.': 0.14; '"n"': 0.16; 'a()': 0.16; 'b()': 0.16; 'cleaner': 0.16; 'cui': 0.16; 'pythonic': 0.16; 'semantics': 0.16; 'subject:python': 0.16; 'followed': 0.16; 'wrote:': 0.18; 'code.': 0.18; 'bit': 0.19; 'examples': 0.20; 'later': 0.20; 'example': 0.22; 'to:name:python-list@python.org': 0.22; 'interpret': 0.24; 'logical': 0.24; 'earlier': 0.24; '(or': 0.24; 'question': 0.24; '>': 0.26; 'handling': 0.26; 'asking': 0.27; 'values': 0.27; 'header:In-Reply-To:1': 0.27; 'to:2**1': 0.27; 'point': 0.28; 'function': 0.29; 'testing': 0.29; "doesn't": 0.30; 'dec': 0.30; "i'm": 0.30; 'url:mailman': 0.30; 'code': 0.31; 'bunch': 0.31; 'purely': 0.31; 'there.': 0.32; 'url:python': 0.33; 'proceed': 0.33; 'third': 0.33; 'date:': 0.34; 'sense': 0.34; 'could': 0.34; 'problem': 0.35; 'advice': 0.35; 'december': 0.35; 'requirement': 0.35; 'but': 0.35; 'there': 0.35; 'really': 0.36; 'are,': 0.36; 'whilst': 0.36; 'url:listinfo': 0.36; 'thanks': 0.36; 'url:org': 0.36; 'should': 0.36; 'effort': 0.37; 'too': 0.37; 'email addr:python.org': 0.37; 'being': 0.38; 'depends': 0.38; 'solving': 0.38; 'to:addr:python-list': 0.38; 'received:65.54': 0.38; 'received:65.54.190': 0.38; 'received:bay0.hotmail.com': 0.38; 'previous': 0.38; 'rather': 0.38; 'subject:': 0.39; 'sure': 0.39; 'to:addr:python.org': 0.39; 'url:mail': 0.40; 'skip:u 10': 0.60; 'mentioned': 0.61; 'took': 0.61; 'matter': 0.61; 'success': 0.61; 'kindly': 0.61; 'course': 0.61; "you're": 0.61; 'email addr:gmail.com': 0.63; 're:': 0.63; 'our': 0.64; 'provide': 0.64; 'more': 0.64; 'email name:python-list': 0.65; 'to:addr:gmail.com': 0.65; 'here': 0.66; 'frank': 0.68; 'nobody': 0.68; 'wish': 0.70; 'clearer': 0.84; 'desperate': 0.84; 'offended': 0.84; 'adventure': 0.91; 'outcome': 0.93; '2013': 0.98 X-TMN: [22T8HNsxKxwSp9ZilMfpwMfQUn7t6Dse] X-Originating-Email: [ycui@outlook.com] Content-Type: multipart/alternative; boundary="_d1167269-452f-4ae6-9257-d9a1a8d106cf_" From: Frank Cui To: Rick Johnson , "python-list@python.org" Subject: RE: cascading python executions only if return code is 0 Date: Sun, 22 Dec 2013 19:14:13 -0300 Importance: Normal In-Reply-To: References: , MIME-Version: 1.0 X-OriginalArrivalTime: 22 Dec 2013 22:44:14.0376 (UTC) FILETIME=[56D3D280:01CEFF67] X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 180 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1387752323 news.xs4all.nl 2936 [2001:888:2000:d::a6]:37288 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:62559 --_d1167269-452f-4ae6-9257-d9a1a8d106cf_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > Date: Sun=2C 22 Dec 2013 14:27:35 -0800 > Subject: Re: cascading python executions only if return code is 0 > From: rantingrickjohnson@gmail.com > To: python-list@python.org >=20 > On Sunday=2C December 22=2C 2013 12:37:04 PM UTC-6=2C Frank Cui wrote: > > I have a requirement where I need to sequentially execute > > a bunch of executions=2C each execution has a return code. > > the followed executions should only be executed if the > > return code is 0. is there a cleaner or more pythonic way > > to do this other than the following ? > > > > if a() =3D=3D 0: > > if b() =3D=3D 0: > > c() >=20 > Hello Frank. >=20 > I kindly request that you be more specific when asking > questions. Both your question and your example code contain > too many ambiguities. >=20 > I'm still not sure what exact outcome you wish to achieve=2C > the only certainty is that you wish to perform a linear > execution of "N" members with later executions being affected > by earlier executions. >=20 > Whether you want executions to proceed on failure or proceed > on success is unclear. Here are a few explicit pseudo code > examples that would have removed all ambiguities: >=20 > if fails(a()): > if fails(b()): > c() >=20 > if succeeds(a()): > if succeeds(b()): > c() >=20 > Or if you prefer a purely OOP approach: >=20 > a.foo() > b.foo() > if a.failed: > if b.failed: > c.foo() >=20 > a.foo() > b.foo() > if a.succeeded: > if b.succeeded: > c.foo() >=20 > or you could simplify using a logical one liner: >=20 > if !a() and !b() then c() > if a() and b() then c() >=20 > Of course you could use the "all" function >=20 > if all(a()=2C b()): > c() > if not any(a()=2C b()): > c() >=20 > But this "all" depends whether you're testing for success or > testing for failure=2C and that point is a distant third from > my desperate need of understanding your semantics of "what" > values are *true* and "what" values are *false*. >=20 > I think (sadly) more time is spent attempting to interpret > what an OP is asking rather than attempting to provide a > solution to the problem the OP is suffering=2C and whilst any > problem solving adventure is likely to improve our > intelligence=2C fumbling about attempting to decode > ambiguities is indeed time that could have been better spent > IF ONLY the speaker (or writer) had put a small bit more > effort into the question. >=20 > Look Frank=2C nobody is perfect=2C we all need to improve our > skills here or there. So don't be offended that my > statements are=2C well=2C... "frank". >=20 >=20 > --=20 > https://mail.python.org/mailman/listinfo/python-list Hi Rick=2C Thanks for pointing out. I accept your advice and will try to make the ques= tions clearer and more straightforward to interpretate . I already took the= suggestion of using exception-based handling over the return code. As to testing whether the previous function fails or succeeds=2C this doesn= 't really matter in the sense that I already mentioned a return code of 0.= =20 ThanksFrank=20 = --_d1167269-452f-4ae6-9257-d9a1a8d106cf_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable


>=3B Date: Sun=2C= 22 Dec 2013 14:27:35 -0800
>=3B Subject: Re: cascading python executi= ons only if return code is 0
>=3B From: rantingrickjohnson@gmail.com>=3B To: python-list@python.org
>=3B
>=3B On Sunday=2C Decem= ber 22=2C 2013 12:37:04 PM UTC-6=2C Frank Cui wrote:
>=3B >=3B I hav= e a requirement where I need to sequentially execute
>=3B >=3B a bun= ch of executions=2C each execution has a return code.
>=3B >=3B the = followed executions should only be executed if the
>=3B >=3B return = code is 0. is there a cleaner or more pythonic way
>=3B >=3B to do t= his other than the following ?
>=3B >=3B
>=3B >=3B if a() =3D= =3D 0:
>=3B >=3B if b() =3D=3D 0:
>=3B >=3B c()>=3B
>=3B Hello Frank.
>=3B
>=3B I kindly request that= you be more specific when asking
>=3B questions. Both your question a= nd your example code contain
>=3B too many ambiguities.
>=3B
= >=3B I'm still not sure what exact outcome you wish to achieve=2C
>= =3B the only certainty is that you wish to perform a linear
>=3B execu= tion of "N" members with later executions being affected
>=3B by earli= er executions.
>=3B
>=3B Whether you want executions to proceed = on failure or proceed
>=3B on success is unclear. Here are a few expli= cit pseudo code
>=3B examples that would have removed all ambiguities:=
>=3B
>=3B if fails(a()):
>=3B if fails(b()):>=3B c()
>=3B
>=3B if succeeds(a()):
>= =3B if succeeds(b()):
>=3B c()
>=3B
>= =3B Or if you prefer a purely OOP approach:
>=3B
>=3B a.foo(= )
>=3B b.foo()
>=3B if a.failed:
>=3B if b.f= ailed:
>=3B c.foo()
>=3B
>=3B a.foo()
&g= t=3B b.foo()
>=3B if a.succeeded:
>=3B if b.succe= eded:
>=3B c.foo()
>=3B
>=3B or you could simpl= ify using a logical one liner:
>=3B
>=3B if !a() and !b() th= en c()
>=3B if a() and b() then c()
>=3B
>=3B Of course= you could use the "all" function
>=3B
>=3B if all(a()=2C b(= )):
>=3B c()
>=3B if not any(a()=2C b()):
>=3B = c()
>=3B
>=3B But this "all" depends whether you're testi= ng for success or
>=3B testing for failure=2C and that point is a dist= ant third from
>=3B my desperate need of understanding your semantics = of "what"
>=3B values are *true* and "what" values are *false*.
>= =3B
>=3B I think (sadly) more time is spent attempting to interpret>=3B what an OP is asking rather than attempting to provide a
>=3B= solution to the problem the OP is suffering=2C and whilst any
>=3B pr= oblem solving adventure is likely to improve our
>=3B intelligence=2C = fumbling about attempting to decode
>=3B ambiguities is indeed time th= at could have been better spent
>=3B IF ONLY the speaker (or writer) h= ad put a small bit more
>=3B effort into the question.
>=3B
&= gt=3B Look Frank=2C nobody is perfect=2C we all need to improve our
>= =3B skills here or there. So don't be offended that my
>=3B statements= are=2C well=2C... "frank".
>=3B
>=3B
>=3B --
>=3B h= ttps://mail.python.org/mailman/listinfo/python-list

Hi Rick=2C

Thanks for pointing out. I accept= your advice and will try to make the questions clearer and more straightfo= rward to interpretate . I already took the suggestion of using exception-ba= sed handling over the return code.

As to testing w= hether the previous function fails or succeeds=2C this doesn't really matte= r in the sense that I already mentioned a return code of 0. =3B

Thanks
Frank =3B

<= br>
= --_d1167269-452f-4ae6-9257-d9a1a8d106cf_--