imread() in master branch doesn't work

Tried using plt.imread() today on a PNG file, and I am getting this PyCXX error:

Traceback (most recent call last):
File “”, line 1, in
File “/home/ben/Programs/matplotlib/lib/matplotlib/pyplot.py”, line 1746, in imread

return _imread(*args, **kwargs)

File “/home/ben/Programs/matplotlib/lib/matplotlib/image.py”, line 1218, in imread
return handler(fd)
TypeError: PyCXX: Error creating object of type N2Py6ObjectE from (nil)

Using master branch on Python 2.7 on 32-bit Ubuntu Oneric. Seems to happen to both color and b&w images. scipy.ndimage.imread() still works fine, though.

Ben Root

I get the same thing with master on 64-bit ubuntu natty, but not with v1.1.x. Mike did quite a bit of work on src/_png.cpp between those two. The most recent commit to that file is not causing the problem, but I have not tracked it down beyond that.

Eric

···

On 01/14/2012 09:02 AM, Benjamin Root wrote:

Tried using plt.imread() today on a PNG file, and I am getting this
PyCXX error:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/home/ben/Programs/matplotlib/lib/matplotlib/pyplot.py", line
1746, in imread
     return _imread(*args, **kwargs)
   File "/home/ben/Programs/matplotlib/lib/matplotlib/image.py", line
1218, in imread
     return handler(fd)
TypeError: PyCXX: Error creating object of type N2Py6ObjectE from (nil)

Using master branch on Python 2.7 on 32-bit Ubuntu Oneric. Seems to
happen to both color and b&w images. scipy.ndimage.imread() still works
fine, though.

Ben Root

I can't confirm this on RHEL5 64-bit or Fedora 16 64-bit.

Have you tried removing the build and installed directories and rebuilding from scratch?

I'm shooting in the dark, but does the attached patch resolve your issue?

diff --git a/src/_png.cpp b/src/_png.cpp
index 9437c87..c17dec9 100644
--- a/src/_png.cpp
+++ b/src/_png.cpp
@@ -553,7 +553,7 @@ _png_module::_read_png(const Py::Object& py_fileobj, const b

      if (PyErr_Occurred()) {
          Py_DECREF((PyObject *)A);
- return NULL;
+ throw Py::Exception();
      } else {
          return (PyObject *)A;

Mike

···

On 01/14/2012 04:51 PM, Eric Firing wrote:

On 01/14/2012 09:02 AM, Benjamin Root wrote:

Tried using plt.imread() today on a PNG file, and I am getting this
PyCXX error:

Traceback (most recent call last):
    File "<stdin>", line 1, in<module>
    File "/home/ben/Programs/matplotlib/lib/matplotlib/pyplot.py", line
1746, in imread
      return _imread(*args, **kwargs)
    File "/home/ben/Programs/matplotlib/lib/matplotlib/image.py", line
1218, in imread
      return handler(fd)
TypeError: PyCXX: Error creating object of type N2Py6ObjectE from (nil)

Using master branch on Python 2.7 on 32-bit Ubuntu Oneric. Seems to
happen to both color and b&w images. scipy.ndimage.imread() still works
fine, though.

Ben Root

I get the same thing with master on 64-bit ubuntu natty, but not with
v1.1.x. Mike did quite a bit of work on src/_png.cpp between those two.
   The most recent commit to that file is not causing the problem, but I
have not tracked it down beyond that.

Eric

------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA

Mike,

Git bisect showed that the problem was your merge commit bca1fb0; you were merging a changeset relative to a very old version, and I'm pretty sure that you accidentally kept the old version of a line. I switched it back to the new version:

https://github.com/matplotlib/matplotlib/commit/c9cefdcf50742fd041636b20aa48d3a821d3299d

Maybe your suggested patch below is still a good idea, but I think that is now an independent question.

Eric

···

On 01/17/2012 05:37 AM, Michael Droettboom wrote:

I can't confirm this on RHEL5 64-bit or Fedora 16 64-bit.

Have you tried removing the build and installed directories and
rebuilding from scratch?

I'm shooting in the dark, but does the attached patch resolve your issue?

diff --git a/src/_png.cpp b/src/_png.cpp
index 9437c87..c17dec9 100644
--- a/src/_png.cpp
+++ b/src/_png.cpp
@@ -553,7 +553,7 @@ _png_module::_read_png(const Py::Object& py_fileobj,
const b

       if (PyErr_Occurred()) {
           Py_DECREF((PyObject *)A);
- return NULL;
+ throw Py::Exception();
       } else {
           return (PyObject *)A;

Mike

On 01/14/2012 04:51 PM, Eric Firing wrote:

On 01/14/2012 09:02 AM, Benjamin Root wrote:

Tried using plt.imread() today on a PNG file, and I am getting this
PyCXX error:

Traceback (most recent call last):
     File "<stdin>", line 1, in<module>
     File "/home/ben/Programs/matplotlib/lib/matplotlib/pyplot.py", line
1746, in imread
       return _imread(*args, **kwargs)
     File "/home/ben/Programs/matplotlib/lib/matplotlib/image.py", line
1218, in imread
       return handler(fd)
TypeError: PyCXX: Error creating object of type N2Py6ObjectE from (nil)

Using master branch on Python 2.7 on 32-bit Ubuntu Oneric. Seems to
happen to both color and b&w images. scipy.ndimage.imread() still works
fine, though.

Ben Root

I get the same thing with master on 64-bit ubuntu natty, but not with
v1.1.x. Mike did quite a bit of work on src/_png.cpp between those two.
    The most recent commit to that file is not causing the problem, but I
have not tracked it down beyond that.

Eric

------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Ah. That explains why I couldn't reproduce it -- I didn't realize the issue had already been closed.

Mike

···

On 01/17/2012 12:53 PM, Eric Firing wrote:

Mike,

Git bisect showed that the problem was your merge commit bca1fb0; you
were merging a changeset relative to a very old version, and I'm pretty
sure that you accidentally kept the old version of a line. I switched
it back to the new version:

https://github.com/matplotlib/matplotlib/commit/c9cefdcf50742fd041636b20aa48d3a821d3299d

Maybe your suggested patch below is still a good idea, but I think that
is now an independent question.

Eric

On 01/17/2012 05:37 AM, Michael Droettboom wrote:

I can't confirm this on RHEL5 64-bit or Fedora 16 64-bit.

Have you tried removing the build and installed directories and
rebuilding from scratch?

I'm shooting in the dark, but does the attached patch resolve your issue?

diff --git a/src/_png.cpp b/src/_png.cpp
index 9437c87..c17dec9 100644
--- a/src/_png.cpp
+++ b/src/_png.cpp
@@ -553,7 +553,7 @@ _png_module::_read_png(const Py::Object& py_fileobj,
const b

        if (PyErr_Occurred()) {
            Py_DECREF((PyObject *)A);
- return NULL;
+ throw Py::Exception();
        } else {
            return (PyObject *)A;

Mike

On 01/14/2012 04:51 PM, Eric Firing wrote:

On 01/14/2012 09:02 AM, Benjamin Root wrote:

Tried using plt.imread() today on a PNG file, and I am getting this
PyCXX error:

Traceback (most recent call last):
      File "<stdin>", line 1, in<module>
      File "/home/ben/Programs/matplotlib/lib/matplotlib/pyplot.py", line
1746, in imread
        return _imread(*args, **kwargs)
      File "/home/ben/Programs/matplotlib/lib/matplotlib/image.py", line
1218, in imread
        return handler(fd)
TypeError: PyCXX: Error creating object of type N2Py6ObjectE from (nil)

Using master branch on Python 2.7 on 32-bit Ubuntu Oneric. Seems to
happen to both color and b&w images. scipy.ndimage.imread() still works
fine, though.

Ben Root

I get the same thing with master on 64-bit ubuntu natty, but not with
v1.1.x. Mike did quite a bit of work on src/_png.cpp between those two.
     The most recent commit to that file is not causing the problem, but I
have not tracked it down beyond that.

Eric

------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

--
Michael Droettboom
Science Software Branch
Space Telescope Science Institute
Baltimore, Maryland, USA