view Python/formatter_string.c @ 61216:f550ed89398f legacy-trunk

Issue #1533: fix inconsistency in range function argument processing: any non-float non-integer argument is now converted to an integer (if possible) using its __int__ method. Previously, only small arguments were treated this way; larger arguments (those whose __int__ was outside the range of a C long) would produce a TypeError. Patch by Alexander Belopolsky (with minor modifications).
author Mark Dickinson <dickinsm@gmail.com>
date Tue, 04 May 2010 16:18:25 +0000
parents 2754d64180d1
children
line wrap: on
line source

/***********************************************************************/
/* Implements the string (as opposed to unicode) version of the
   built-in formatters for string, int, float.  That is, the versions
   of int.__format__, etc., that take and return string objects */

#include "Python.h"
#include "../Objects/stringlib/stringdefs.h"

#define FORMAT_STRING  _PyBytes_FormatAdvanced
#define FORMAT_LONG    _PyLong_FormatAdvanced
#define FORMAT_INT     _PyInt_FormatAdvanced
#define FORMAT_FLOAT   _PyFloat_FormatAdvanced
#ifndef WITHOUT_COMPLEX
#define FORMAT_COMPLEX _PyComplex_FormatAdvanced
#endif

#include "../Objects/stringlib/formatter.h"