[Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Stefan Behnel
Hi,

I find this worth fixing for 0.17:

http://trac.cython.org/cython_trac/ticket/780

Stefan
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread mark florisson
On 21 June 2012 09:59, Stefan Behnel  wrote:
> Hi,
>
> I find this worth fixing for 0.17:
>
> http://trac.cython.org/cython_trac/ticket/780
>
> Stefan
> ___
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel

It seems that arrays are compared as pointer values, so it doesn't
even compare sensibly anyway. You can easily work around it by writing
( memoryview).shape though. I think these
shape/strides/suboffset arrays should have a special type and coerce
to tuples when coercing to an object. Feel free to work on that, it
wouldn't really require touching much or any of the memoryview code,
it's not really on m priority list right now.

BTW, Stefan, how do we start Jenkins on the sage server? It's been
down for weeks now.
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


[Cython] Jenkins status

2012-06-21 Thread Stefan Behnel
mark florisson, 21.06.2012 12:38:
> BTW, Stefan, how do we start Jenkins on the sage server? It's been
> down for weeks now.

It seems like the sage.math server would be happy about a restart. I'll
trigger the ML.

Stefan
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Dag Sverre Seljebotn

On 06/21/2012 10:59 AM, Stefan Behnel wrote:

Hi,

I find this worth fixing for 0.17:

http://trac.cython.org/cython_trac/ticket/780



I'm not sure about the timeline here.

The object<->memoryview semantics haven't even been hammered down yet; 
does "mview.customattr" trigger an AttributeError, SyntaxError or fall 
back to some underlying object (constructing it if necesarry).


Until that happens, memoryviews are an experimental feature and present 
for development purposes mostly, so it's not like this is a big bug that 
would bite end-users. Thinking about those semantics is much more 
important...


Dag
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Stefan Behnel
Dag Sverre Seljebotn, 21.06.2012 13:10:
> On 06/21/2012 10:59 AM, Stefan Behnel wrote:
>> I find this worth fixing for 0.17:
>>
>> http://trac.cython.org/cython_trac/ticket/780
> 
> I'm not sure about the timeline here.
> 
> The object<->memoryview semantics haven't even been hammered down yet; does
> "mview.customattr" trigger an AttributeError, SyntaxError or fall back to
> some underlying object (constructing it if necesarry).
> 
> Until that happens, memoryviews are an experimental feature and present for
> development purposes mostly, so it's not like this is a big bug that would
> bite end-users. Thinking about those semantics is much more important...

Absolutely.

I ran into this when I gave a Cython+NumPy course and this was the first
thing that the attendants tried when I asked them to validate that two
input arrays have the same size before adding them. It's the one obvious
way to do it, and it fails miserably. I think it should be fixed, and I
think it should be fixed soon because it feels really low-level and
complicated, especially to new users.

Stefan
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Dag Sverre Seljebotn

On 06/21/2012 01:36 PM, Stefan Behnel wrote:

Dag Sverre Seljebotn, 21.06.2012 13:10:

On 06/21/2012 10:59 AM, Stefan Behnel wrote:

I find this worth fixing for 0.17:

http://trac.cython.org/cython_trac/ticket/780


I'm not sure about the timeline here.

The object<->memoryview semantics haven't even been hammered down yet; does
"mview.customattr" trigger an AttributeError, SyntaxError or fall back to
some underlying object (constructing it if necesarry).

Until that happens, memoryviews are an experimental feature and present for
development purposes mostly, so it's not like this is a big bug that would
bite end-users. Thinking about those semantics is much more important...


Absolutely.

I ran into this when I gave a Cython+NumPy course and this was the first
thing that the attendants tried when I asked them to validate that two
input arrays have the same size before adding them. It's the one obvious
way to do it, and it fails miserably. I think it should be fixed, and I
think it should be fixed soon because it feels really low-level and
complicated, especially to new users.


Can you clarify a bit -- did you give this course using 
np.ndarray[double, ndim=2], or double[:, :]? They're really very 
separate under the hood and the fix is different.


Or, did you actually use object[double, ndim=2] like in the bug report? 
(Did me and Mark get around to propose deprecating this one on the list?)


Dag
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Stefan Behnel
Dag Sverre Seljebotn, 21.06.2012 14:05:
> On 06/21/2012 01:36 PM, Stefan Behnel wrote:
>>> On 06/21/2012 10:59 AM, Stefan Behnel wrote:
 I find this worth fixing for 0.17:

 http://trac.cython.org/cython_trac/ticket/780
>>>
>> I ran into this when I gave a Cython+NumPy course and this was the first
>> thing that the attendants tried when I asked them to validate that two
>> input arrays have the same size before adding them. It's the one obvious
>> way to do it, and it fails miserably. I think it should be fixed, and I
>> think it should be fixed soon because it feels really low-level and
>> complicated, especially to new users.
> 
> Can you clarify a bit -- did you give this course using np.ndarray[double,
> ndim=2], or double[:, :]? They're really very separate under the hood and
> the fix is different.
> 
> Or, did you actually use object[double, ndim=2] like in the bug report?
> (Did me and Mark get around to propose deprecating this one on the list?)

IIRC, we used object[double, ndim=2] for both and I also tried it with a
memory view as in the bug report. I thought that using "object" was the
preferred way to do it? At least, it doesn't restrict the type of the
buffer exporter, which I consider a good thing.

Stefan
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Dag Sverre Seljebotn

On 06/21/2012 02:59 PM, Stefan Behnel wrote:

Dag Sverre Seljebotn, 21.06.2012 14:05:

On 06/21/2012 01:36 PM, Stefan Behnel wrote:

On 06/21/2012 10:59 AM, Stefan Behnel wrote:

I find this worth fixing for 0.17:

http://trac.cython.org/cython_trac/ticket/780



I ran into this when I gave a Cython+NumPy course and this was the first
thing that the attendants tried when I asked them to validate that two
input arrays have the same size before adding them. It's the one obvious
way to do it, and it fails miserably. I think it should be fixed, and I
think it should be fixed soon because it feels really low-level and
complicated, especially to new users.


Can you clarify a bit -- did you give this course using np.ndarray[double,
ndim=2], or double[:, :]? They're really very separate under the hood and
the fix is different.

Or, did you actually use object[double, ndim=2] like in the bug report?
(Did me and Mark get around to propose deprecating this one on the list?)


IIRC, we used object[double, ndim=2] for both and I also tried it with a
memory view as in the bug report. I thought that using "object" was the
preferred way to do it? At least, it doesn't restrict the type of the
buffer exporter, which I consider a good thing.


That's a very theoretical argument as NumPy arrays are in practice the 
only exporter.


I always teach np.ndarray[double...]. I've never told anyone about 
object[...], I don't think it's in much use. For starters it's going to 
be horribly inefficient unless you also add "mode='strided'" within the 
brackets.


My proposal (and Mark's I think) is:

Since the memoryviews will neatly cover the general exporter case, and 
since the [] syntax is much overloaded already (used for C++ templates 
too), we should deprecate object[...] no matter what else happens.


Depending on what's decided for np.ndarray[...], we have:

Case A): Deprecate both np.ndarray[...] and object[...]

Case B): Only deprecate object[...], keep np.ndarray[...] (e.g., through 
a decorator used in numpy.pxd on the ndarray type). So rather than 
having a trailing [] mean buffers unless it means something else (like 
C++ templates), we instead make np.ndarray a "template", through special 
compiler support.



Dag
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread Stefan Behnel
Dag Sverre Seljebotn, 21.06.2012 15:06:
> On 06/21/2012 02:59 PM, Stefan Behnel wrote:
>> Dag Sverre Seljebotn, 21.06.2012 14:05:
>>> On 06/21/2012 01:36 PM, Stefan Behnel wrote:
> On 06/21/2012 10:59 AM, Stefan Behnel wrote:
>> I find this worth fixing for 0.17:
>>
>> http://trac.cython.org/cython_trac/ticket/780
>
 I ran into this when I gave a Cython+NumPy course and this was the first
 thing that the attendants tried when I asked them to validate that two
 input arrays have the same size before adding them. It's the one obvious
 way to do it, and it fails miserably. I think it should be fixed, and I
 think it should be fixed soon because it feels really low-level and
 complicated, especially to new users.
>>>
>>> Can you clarify a bit -- did you give this course using np.ndarray[double,
>>> ndim=2], or double[:, :]? They're really very separate under the hood and
>>> the fix is different.
>>>
>>> Or, did you actually use object[double, ndim=2] like in the bug report?
>>> (Did me and Mark get around to propose deprecating this one on the list?)
>>
>> IIRC, we used object[double, ndim=2] for both and I also tried it with a
>> memory view as in the bug report. I thought that using "object" was the
>> preferred way to do it? At least, it doesn't restrict the type of the
>> buffer exporter, which I consider a good thing.
> 
> That's a very theoretical argument as NumPy arrays are in practice the only
> exporter.

Except for, say, bytes objects, array.array and user implemented types,
that is. lxml has buffer support for its serialised XSLT output, for example.


> I always teach np.ndarray[double...]. I've never told anyone about
> object[...], I don't think it's in much use. For starters it's going to be
> horribly inefficient unless you also add "mode='strided'" within the brackets.

Ah, good to know.


> My proposal (and Mark's I think) is:
> 
> Since the memoryviews will neatly cover the general exporter case, and
> since the [] syntax is much overloaded already (used for C++ templates
> too), we should deprecate object[...] no matter what else happens.
> 
> Depending on what's decided for np.ndarray[...], we have:
> 
> Case A): Deprecate both np.ndarray[...] and object[...]
> 
> Case B): Only deprecate object[...], keep np.ndarray[...] (e.g., through a
> decorator used in numpy.pxd on the ndarray type). So rather than having a
> trailing [] mean buffers unless it means something else (like C++
> templates), we instead make np.ndarray a "template", through special
> compiler support.

What's the point in technically deprecating them if we can't remove them
without breaking code? Wouldn't it be better to deprecate them only in the
docs?

Stefan
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread mark florisson
On 21 June 2012 14:34, Stefan Behnel  wrote:
> Dag Sverre Seljebotn, 21.06.2012 15:06:
>> On 06/21/2012 02:59 PM, Stefan Behnel wrote:
>>> Dag Sverre Seljebotn, 21.06.2012 14:05:
 On 06/21/2012 01:36 PM, Stefan Behnel wrote:
>> On 06/21/2012 10:59 AM, Stefan Behnel wrote:
>>> I find this worth fixing for 0.17:
>>>
>>> http://trac.cython.org/cython_trac/ticket/780
>>
> I ran into this when I gave a Cython+NumPy course and this was the first
> thing that the attendants tried when I asked them to validate that two
> input arrays have the same size before adding them. It's the one obvious
> way to do it, and it fails miserably. I think it should be fixed, and I
> think it should be fixed soon because it feels really low-level and
> complicated, especially to new users.

 Can you clarify a bit -- did you give this course using np.ndarray[double,
 ndim=2], or double[:, :]? They're really very separate under the hood and
 the fix is different.

 Or, did you actually use object[double, ndim=2] like in the bug report?
 (Did me and Mark get around to propose deprecating this one on the list?)
>>>
>>> IIRC, we used object[double, ndim=2] for both and I also tried it with a
>>> memory view as in the bug report. I thought that using "object" was the
>>> preferred way to do it? At least, it doesn't restrict the type of the
>>> buffer exporter, which I consider a good thing.
>>
>> That's a very theoretical argument as NumPy arrays are in practice the only
>> exporter.
>
> Except for, say, bytes objects, array.array and user implemented types,
> that is. lxml has buffer support for its serialised XSLT output, for example.
>

You can already easily obtain a pointer from a bytes object, which is
already 1d anyways :) Whether buffers on array.array are useful is
still questionable given their variably-sized nature.

>> I always teach np.ndarray[double...]. I've never told anyone about
>> object[...], I don't think it's in much use. For starters it's going to be
>> horribly inefficient unless you also add "mode='strided'" within the 
>> brackets.
>
> Ah, good to know.
>
>
>> My proposal (and Mark's I think) is:
>>
>> Since the memoryviews will neatly cover the general exporter case, and
>> since the [] syntax is much overloaded already (used for C++ templates
>> too), we should deprecate object[...] no matter what else happens.
>

I agree with deprecating the object[] syntax, I think memoryviews
should prove themselves a bit more for e.g. 0.17, before we start
deprecating np.ndarray.

>> Depending on what's decided for np.ndarray[...], we have:
>>
>> Case A): Deprecate both np.ndarray[...] and object[...]
>>
>> Case B): Only deprecate object[...], keep np.ndarray[...] (e.g., through a
>> decorator used in numpy.pxd on the ndarray type). So rather than having a
>> trailing [] mean buffers unless it means something else (like C++
>> templates), we instead make np.ndarray a "template", through special
>> compiler support.
>
> What's the point in technically deprecating them if we can't remove them
> without breaking code? Wouldn't it be better to deprecate them only in the
> docs?
>
> Stefan
> ___
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] buffer shape incompatible with memoryview shape

2012-06-21 Thread mark florisson
On 21 June 2012 13:05, Dag Sverre Seljebotn  wrote:
> On 06/21/2012 01:36 PM, Stefan Behnel wrote:
>>
>> Dag Sverre Seljebotn, 21.06.2012 13:10:
>>>
>>> On 06/21/2012 10:59 AM, Stefan Behnel wrote:

 I find this worth fixing for 0.17:

 http://trac.cython.org/cython_trac/ticket/780
>>>
>>>
>>> I'm not sure about the timeline here.
>>>
>>> The object<->memoryview semantics haven't even been hammered down yet;
>>> does
>>> "mview.customattr" trigger an AttributeError, SyntaxError or fall back to
>>> some underlying object (constructing it if necesarry).
>>>
>>> Until that happens, memoryviews are an experimental feature and present
>>> for
>>> development purposes mostly, so it's not like this is a big bug that
>>> would
>>> bite end-users. Thinking about those semantics is much more important...
>>
>>
>> Absolutely.
>>
>> I ran into this when I gave a Cython+NumPy course and this was the first
>> thing that the attendants tried when I asked them to validate that two
>> input arrays have the same size before adding them. It's the one obvious
>> way to do it, and it fails miserably. I think it should be fixed, and I
>> think it should be fixed soon because it feels really low-level and
>> complicated, especially to new users.
>
>
> Can you clarify a bit -- did you give this course using np.ndarray[double,
> ndim=2], or double[:, :]? They're really very separate under the hood and
> the fix is different.

I think we should support both, although it seems a bit of a shame to
fix something just a while before deprecating it :) Anyway, both fixes
are really straightforward anyway.

> Or, did you actually use object[double, ndim=2] like in the bug report? (Did
> me and Mark get around to propose deprecating this one on the list?)
>
> Dag
>
> ___
> cython-devel mailing list
> cython-devel@python.org
> http://mail.python.org/mailman/listinfo/cython-devel
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel