On Mon, Mar 17, 2014 at 12:06 PM, Garth N. Wells <[email protected]> wrote:

>
>
> On Mon, 17 Mar, 2014 at 10:56 AM, Johan Hake <[email protected]> wrote:
>
>> SWIG 3.0 was just released with some backward incompatible changes to the
>> bool typemap.
>> Previously the typemap just checked if a Python object could be evaluated
>> as a bool. Several different classes implement such conversion also dolfin
>> making:
>>
>>   info(mesh,
>> 
>> FunctionSpace(mesh, "CG", 1))
>>
>> perfectly valid.
>>
>
> What should the above do?


Just an example of lazy conversion that previously worked, as
bool(FunctionSpace(mesh,
"CG", 1)) returns True.


>  Now one can only pass var for which:
>>
>>   isinstance(var, bool)
>>
>> return True.
>>
>> As a general comment I think this is good, but it also make other more
>> handy user cases fails, like numpy.bool_ and python int. The former is used
>> in the inside method of SubDomain (x[0]<0.5) and the latter in a typical
>> call to info(parameters, 1).
>>
>> I suggest we extend the typemap for SWIG 3.0 to also include numpy.bool_
>> but I am reluctant to make info(parameters, 1) work. Users could easily
>> update there practice to write info(parameters, True)
>> Any comments?
>>
>
>
> I agree with your suggestion. I think info(parameters, 1) is bad practice,
> so it's fine if it now fails. Related, I recently fixed C++ compile
> failures with clang where DOLFIN was lazy and used implicit interger/bool
> casting. We should be more careful.
>

Ok, lets wait a few moments and see what others says. I did implemented
this fix locally and it triggered some easily fixed errors, due to sloppy
implementation in some places.

Johan


Garth
>
>
>  Johan
>>
>>
>
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to