-> > Apparently file.seek doesn't have this DeprecationWarning though..
-> > Strange, that.
-> >  >>> f.seek(3.6)
-> >  >>> f.tell()
-> > 3L
-> 
-> That's a bug. Who'll fix it?

Added:

+         if (PyFloat_Check(offobj))
+             PyErr_Warn(PyExc_DeprecationWarning,
+                        "integer argument expected, got float" );

see attached diff.  I also attached it to the patch at SourceForge,
with a comment, just to keep the record straight.

The DeprecationWarning wasn't given because a manual PyObject -->
int/long conversion was being done, rather than the usual conversion
implicit in ParseTuple.

Regression tests run w/o problem on RH 9.0/i386.  Now you get the
correct behavior:

--
>>> f = open('/dev/zero')
>>> f.seek(5)
>>> f.tell()
5L
>>> f.seek(5.2)
__main__:1: DeprecationWarning: integer argument expected, got float
>>> f.tell()
5L
--

This seems like a reasonable resolution to patch #1067760, to me...

cheers,
--titus
? Objects/.fileobject.c.swp
Index: Objects/fileobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v
retrieving revision 2.193
diff -c -c -r2.193 fileobject.c
*** Objects/fileobject.c        7 Nov 2004 14:15:28 -0000       2.193
--- Objects/fileobject.c        23 Dec 2004 08:19:20 -0000
***************
*** 462,467 ****
--- 462,472 ----
        whence = 0;
        if (!PyArg_ParseTuple(args, "O|i:seek", &offobj, &whence))
                return NULL;
+ 
+         if (PyFloat_Check(offobj))
+             PyErr_Warn(PyExc_DeprecationWarning,
+                        "integer argument expected, got float" );
+         
  #if !defined(HAVE_LARGEFILE_SUPPORT)
        offset = PyInt_AsLong(offobj);
  #else
_______________________________________________
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