Pylint should already catch this case, if not we can add a check for it 

On 3 December 2019 19:53:56 GMT, Bjorn Olsen <bjorn.ols...@gmail.com> wrote:
>Hi all,
>
>This SO answer helped me on another project:
>https://stackoverflow.com/a/41721518/2409299
>
>The goal of an assertion in Python is to inform developers about
>*unrecoverable* errors in a program.
>Assertions are not intended to signal expected error conditions, like
>“file
>not found”, where a user can take corrective action (or just try
>again).
>
>My opinion - it's simpler to avoid asserts and rather use Exceptions.
>The CPU consumed to report an Exception is negligible compared to
>developer
>time trying to figure out an assert.
>If an assert is optimized out and the condition causing it does get
>triggered, then this can cause unexpected and untested behavior in the
>program if it continues past where the assert was.
>An Exception isn't optimised out and therefore will trigger as
>expected.
>
>Perhaps a new kind of Exception - UnrecoverableException - would be
>best.
>However if we do decide to use asserts then it should be used
>sparingly,
>and only for specific conditions such as above.
>
>Lastly, consider that it is easy to write an assert which doesn't work
>as
>expected:
>Always evaluates True:
>
>assert (2 + 2 == 5, "Houston we've got a problem")
>
>Always evaluates False:
>
>assert 2 + 2 == 5, "Houston we've got a problem"
>
>
>Kind regards
>
>
>On Tue, Dec 3, 2019 at 7:06 PM Iuliia Volkova <xnuins...@gmail.com>
>wrote:
>
>> So, now, in this code I will have no idea that is this, is this error
>from
>> Airflow or somebody forget to remove from master code debug assert?
>So with
>> normal error it will be like this:
>>
>> *assert self.futures, NOT_STARTED_MESSAGE*
>>
>> *if not self.futures: *
>> *    raise AirflowException(NOT_STARTED_MESSAGE)*
>>
>> second variant: more readable, does not cause any issues with any
>flags, I
>> see in traceback what kind of error is this - some random Apache
>Airflow or
>> maybe ValueError, or maybe TypeError - I have more information as
>developer
>>
>> And at the end of the day '*debug*' tool not used in production code.
>>
>>
>> On Tue, Dec 3, 2019 at 7:53 PM Jarek Potiuk
><jarek.pot...@polidea.com>
>> wrote:
>>
>> > Just an example of such asserts which IMHO are nicer are here:
>> >
>> >
>>
>https://github.com/apache/airflow/pull/6596/files#diff-4c0c36f193f2cd65e2b55ba3102c1ba2R38
>> > One line assert with message.
>> >
>> > J.
>> >
>> >
>> >
>> > On Tue, Dec 3, 2019 at 5:36 PM Anton Zayniev
><anton.zayn...@gmail.com>
>> > wrote:
>> >
>> > > Hi, guys. I'm really surprised about this
>> > >
>> > > > - (+) asserts look nicer and are more readable than if
>(something):
>> > > >    throw Exception()
>> > >
>> > > I'm pretty sure that all the code I have encountered a way more
>> readable
>> > > using "if/else" or "try/except". But may be it is just me. Could
>you
>> > > provide an example of code which is better with "assert"?
>> > >
>> > >  - (+) asserts are especially good for cases like None exception
>- they
>> > > >    add more developer friendly messages when they will fail a
>few
>> lines
>> > > > below
>> > > >    with (for example) None has no property "dag". But it's ok
>if
>> those
>> > > get
>> > > >    optimised away.
>> > >
>> > > I think the best way to catch None is to ensure your code would
>fail
>> > > conveniently. Like raising understandable Exception message, if
>you
>> > believe
>> > > that should be a point of confusion.
>> > >
>> > > On Tue, 3 Dec 2019 at 16:22, Iuliia Volkova <xnuins...@gmail.com>
>> wrote:
>> > >
>> > > > Hi everyone, I'm usually not write anything in this mail list,
>but
>> this
>> > > > theme something really strange
>> > > > Exist offissial doc:
>> > > >
>> > >
>> >
>>
>https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement
>> > > >
>> > > > and there is a key information: Assert statements are a
>convenient
>> way
>> > to
>> > > > insert debugging assertions into a program.
>> > > >
>> > > > *Debugging. * - this is a key propose of asserts keyword.
>> > > >
>> > > > there is no any type of possible asserts that cannot be done
>with
>> > normal
>> > > > Exceptions and Errors types that more explicit and detailed
>when
>> > > 'assert' -
>> > > > you have ValueError, TyperError and etc. what kind of problems
>must
>> > > solved
>> > > > DEBUG tools in production code that can be easily turned off on
>> servers
>> > > by
>> > > > users?
>> > > >
>> > > > asserts used in tests and in process of debug code, not in
>production
>> > > >
>> > > > On Tue, Dec 3, 2019 at 6:47 PM Jarek Potiuk <
>> jarek.pot...@polidea.com>
>> > > > wrote:
>> > > >
>> > > > > We had a few discussions about using asserts in our code. I
>pasted
>> > some
>> > > > > links below but wanted to extract a gist of it.
>> > > > >
>> > > > > Here are the comments summarised:
>> > > > >
>> > > > >    - (+) asserts look nicer and are more readable than if
>> > (something):
>> > > > >    throw Exception()
>> > > > >    - (-) asserts can be optimized away with -O flag so we
>should
>> not
>> > > > based
>> > > > >    any real logic on having them
>> > > > >    - (+) asserts are good in cases that can happen in
>development
>> but
>> > > > >    should "never happen" in reality
>> > > > >    - (+) asserts are especially good for cases like None
>exception
>> -
>> > > they
>> > > > >    add more developer friendly messages when they will fail a
>few
>> > lines
>> > > > > below
>> > > > >    with (for example) None has no property "dag". But it's ok
>if
>> > those
>> > > > get
>> > > > >    optimised away.
>> > > > >
>> > > > > We would like to discuss those points in community and have a
>> > > community -
>> > > > > driven decision on:
>> > > > >
>> > > > > 1) whether we should use asserts?
>> > > > > 2) in which cases
>> > > > > 3) in which cases we should NOT use asserts.
>> > > > >
>> > > > > J.
>> > > > >
>> > > > > The links here:
>> > > > >
>> > > > > Slack Discussion:
>> > > > >
>> >
>https://apache-airflow.slack.com/archives/CCQ7EGB1P/p1575364664041300
>> > > > >
>> > > > > Github threads:
>> > > > >
>> > > > >    -
>> > https://github.com/apache/airflow/pull/6596#discussion_r352916409
>> > > > >    -
>> > https://github.com/apache/airflow/pull/6596#discussion_r352914727
>> > > > >    -
>> > > > >
>> > >
>>
>https://github.com/apache/airflow/pull/3690#pullrequestreview-143376629
>> > > > >
>> > > > > Stack overflow link for asserts:
>> > > > >
>> > > > >    - https://stackoverflow.com/a/1838411/5691525
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > > J.
>> > > > >
>> > > > > --
>> > > > >
>> > > > > Jarek Potiuk
>> > > > > Polidea <https://www.polidea.com/> | Principal Software
>Engineer
>> > > > >
>> > > > > M: +48 660 796 129 <+48660796129>
>> > > > > [image: Polidea] <https://www.polidea.com/>
>> > > > >
>> > > >
>> > > >
>> > > > --
>> > > > _________
>> > > >
>> > > > С уважением, Юлия Волкова
>> > > > Тел. : +7 (911) 116-71-82
>> > > >
>> > >
>> >
>> >
>> > --
>> >
>> > Jarek Potiuk
>> > Polidea <https://www.polidea.com/> | Principal Software Engineer
>> >
>> > M: +48 660 796 129 <+48660796129>
>> > [image: Polidea] <https://www.polidea.com/>
>> >
>>
>>
>> --
>> _________
>>
>> С уважением, Юлия Волкова
>> Тел. : +7 (911) 116-71-82
>>

Reply via email to