On 03/17/2011 07:23 PM, Terry Reedy wrote:
As I understand it, the Pyxxx to PyCapsule CAPI warning was put in 2.7.

In 2.7, the CObject constructor PyCObject_FromVoidPtr() threw a PendingDeprecationWarning exception. Like other warnings, these aren't active by default. This still caused two problems:

   * If you enabled warnings, PyCObject_FromVoidPtr() would return
     NULL.  There is definitely code out there that assumes
     PyCObject_FromVoidPtr() always succeeds and doesn't bother
     checking the pointer it gets back.  That's a bad assumption, the
     code is therefore buggy--but exposing these heretofore unnoticed
     bugs caused problems.
   * If you enabled warnings-as-errors, a PendingDeprecationWarning is
     therefore an error.  In some environments there's a requirement
     that Python must build from scratch and pass its unit test suite
     without errors, with warnings-as-errors turned on.  Python 2.7
     shipped with one module still using PyCObject_FromVoidPtr(),
     bsddb, as it's externally maintained.  (I wanted to change it to
     use PyCapsule for 2.7 but was told to leave it alone.)  bsddb's
     test threw the warning, the warning was an error, now people had a
     problem.

In 2.7.1 PyCObject_FromVoidPtr() now calls PyErr_WarnPy3k(). This means it's been promoted to throwing DeprecationWarning! But that's also guarded with Py_Py3kWarningFlag so it's not active unless you ask for that too (as with "-3" on the command-line, etc).


/larry/
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to