Commit Graph

26 Commits

Author SHA1 Message Date
Eric Smith 8ec90443f5 Merged revisions 70364 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70364 | eric.smith | 2009-03-14 07:57:26 -0400 (Sat, 14 Mar 2009) | 17 lines

  Issue 5237, Allow auto-numbered replacement fields in str.format() strings.

  For simple uses for str.format(), this makes the typing easier. Hopfully this
  will help in the adoption of str.format().

  For example:
  'The {} is {}'.format('sky', 'blue')

  You can mix and matcth auto-numbering and named replacement fields:
  'The {} is {color}'.format('sky', color='blue')

  But you can't mix and match auto-numbering and specified numbering:
  'The {0} is {}'.format('sky', 'blue')
  ValueError: cannot switch from manual field specification to automatic field numbering

  Will port to 3.1.
........
2009-03-14 12:29:34 +00:00
Mark Dickinson e94c679df0 Issue #1717: rename tp_compare to tp_reserved. I'll change the
type of tp_compare in a separate commit, for ease of reversion
should things go wrong.
2009-02-02 20:36:42 +00:00
Georg Brandl 559e5d7f4d #2630: Implement PEP 3138.
The repr() of a string now contains printable Unicode characters unescaped.
The new ascii() builtin can be used to get a repr() with only ASCII characters in it.

PEP and patch were written by Atsuo Ishimoto.
2008-06-11 18:37:52 +00:00
Eric Smith ba8c028391 Refactored known type optimization, in anticipation of backporting to 2.6. I'll probably move this code into PyObject_Format, so everyone benefits. 2008-06-02 14:57:32 +00:00
Eric Smith 1d138f1c1a Optimization of str.format() for cases with unicode, long, and float
arguments.  This gives about 30% speed improvement for the simplest
(but most common) cases.  This patch skips the __format__ dispatch, and
also avoids creating an object to hold the format_spec.

Unfortunately, backporting this to 2.6 is going to be more challenging
due to str/unicode issues with format_spec.  I'll work on that next.

Then I'll spend some time profiling and see what that tells me.
2008-05-31 01:40:08 +00:00
Christian Heimes 72b710a596 Renamed PyString to PyBytes 2008-05-26 13:28:38 +00:00
Martin v. Löwis 5a6f4585fd Merged revisions 62199 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r62199 | martin.v.loewis | 2008-04-07 05:08:28 +0200 (Mo, 07 Apr 2008) | 2 lines

  Bug #2388: Fix gcc warnings when compiling with --enable-unicode=ucs4.
........
2008-04-07 03:22:07 +00:00
Eric Smith ecbac8f38f Corrected assert to check for correct type in py3k. 2008-02-24 21:44:34 +00:00
Eric Smith 8a0217cd86 Port 60893 to py3k, without unicode test. 2008-02-18 18:07:47 +00:00
Eric Smith 8fd3eba050 Fixes for shared 2.6 code that implements PEP 3101, advanced string
formatting.

Includes:
 - Modifying tests for basic types to use __format__ methods, instead
   of builtin "format".
 - Adding PyObject_Format.
 - General str/unicode cleanup discovered when backporting to 2.6.
 - Removing datetimemodule.c's time_format, since it was identical
   to date_format.

The files in Objects/stringlib that implement PEP 3101 (stringdefs.h,
unicodedefs.h, formatter.h, string_format.h) are identical in trunk
and py3k.  Any changes from here on should be made to trunk, and
changes will propogate to py3k).
2008-02-17 19:48:00 +00:00
Christian Heimes 90aa7646af #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. 2007-12-19 02:45:37 +00:00
Christian Heimes 217cfd1c86 Cleanup: Replaced most PyInt_ aliases with PyLong_ and disabled the aliases in intobject.h 2007-12-02 14:31:20 +00:00
Thomas Heller 519a042c7c Replace PyObject_Unicode with PyObject_Str everywhere, and remove the
#define for PyObject_Unicode in object.h.
2007-11-15 20:48:54 +00:00
Eric Smith 45c078736e Simplified recursion logic. Modified variable name to match string.Formatter. 2007-09-05 02:02:43 +00:00
Eric Smith 11529195ca Changed some ValueError's to KeyError and IndexError.
Corrected code for invalid conversion specifier.
Added tests to verify.

Modified string.Formatter to correctly expand format_spec's,
and added a limit to recursion depth.  Added _vformat()
method to support both of these.
2007-09-04 23:04:22 +00:00
Eric Smith 4cb4e4e882 Fix segfault discovered by Ron Adam. Not checking for terminating right bracket in "'{0[}'.format(())". Fixed, and tests added. 2007-09-03 08:40:29 +00:00
Eric Smith 625cbf28ee Modified parsing of format strings, so that we always return
a tuple (literal, field_name, format_spec, conversion).

literal will always be a string, but might be of zero length.
field_name will be None if there is no markup text
format_spec will be a (possibly zero length) string if
  field_name is non-None
conversion will be a one character string, or None

This makes the Formatter class, and especially it's parse()
method, easier to understand.

Suggestion was by Jim Jewett, inspired by the "tail" of an
elementtree node.

Also, fixed a reference leak in fieldnameiter_next.
2007-08-29 03:22:59 +00:00
Eric Smith 9e7c8da61c Simplified tuple returned by string._formatter_parser to only have
4 elements.  No need for old is_markup element, the same information
is indicated by literal_string being None.

Factored string.Formatter class to make subclasses easier to write.
2007-08-28 11:15:20 +00:00
Eric Smith 0cb431c071 Code layout changes for PEP 7 compliance. 2007-08-28 01:07:27 +00:00
Eric Smith f6db40994f Moved fieldnameiterator and formatteriterator to stringlib/string_format.h, so that they can be used when backporting to 2.6. 2007-08-27 23:52:26 +00:00
Eric Smith 7a6dd29067 Cleanup in anticipation of moving formatteriterator and fieldnameiterator into stringlib/string_format.h. 2007-08-27 23:30:47 +00:00
Neal Norwitz 8a4eb298e2 Fix refleaks in test_unicode and test_string related to the new format code.
Stop polluting namespace.
2007-08-27 07:24:17 +00:00
Neal Norwitz 247b5154ac This adds a leak, but fixes a crash. The leaking code is:
"{0:.{precision}s}".format('hello world', precision=5)
I pretty sure it's because of the 'precision' keyword.
Still need to investigate further.
2007-08-27 03:22:50 +00:00
Eric Smith 7ade6485ab PEP 3101: Completed string.Formatter class. Reimplemented field_name to object transformation. 2007-08-26 22:27:13 +00:00
Neal Norwitz 3ef6a57908 Get rid of compiler warning on 64-bit 2007-08-25 17:08:59 +00:00
Eric Smith 8c66326368 Implementation of PEP 3101, Advanced String Formatting.
Known issues:

The string.Formatter class, as discussed in the PEP, is incomplete.

Error handling needs to conform to the PEP.

Need to fix this warning that I introduced in Python/formatter_unicode.c:
Objects/stringlib/unicodedefs.h:26: warning: `STRINGLIB_CMP' defined but not used

Need to make sure sign formatting is correct, more tests needed.

Need to remove '()' sign formatting, left over from an earlier version of the PEP.
2007-08-25 02:26:07 +00:00