On Tue, Sep 5, 2017 at 10:43 AM, Pavol Lisy <pavol.lisy@gmail.com> wrote:
On 9/4/17, Koos Zevenhoven <k7hoven@gmail.com> wrote:
​[...]​

>     with cvar.assign(new_value):
>         assert cvar.value is new_value
>         # Any code here, or down the call chain from here, sees:
>         #     cvar.value is new_value
>         # unless another value has been assigned in a
>         # nested context
>         assert cvar.value is new_value
>     # the assignment of ``cvar`` to ``new_value`` is no longer visible
>     assert cvar.value == "the default value"

I feel that of "is" and "==" in assert statements in this PEP has to
be used (or described) more precisely.

​​
​The use is quite precise as it is now. I can't use `is` for the string values, because the result would depend on whether Python gives you the same str instance as before, or a new one with the same content.​ Maybe I'll get rid of literal string values in the description, since it seems to only cause distraction.

 

What if new_value above is 123456789?

​Any value is fine.​

 

maybe using something like could be better? ->

   def equals(a, b):
      return a is b or a == b

Doesn't PEP need to think about something like "context level overflow" ?

Or members like: cvar.level ?

I don't see any need for this at this point, or possibly ever.​


​––Koos​


--
+ Koos Zevenhoven + http://twitter.com/k7hoven +