[Python-checkins] r70351 - peps/trunk/pep-0378.txt

raymond.hettinger python-checkins at python.org
Sat Mar 14 00:28:44 CET 2009


Author: raymond.hettinger
Date: Sat Mar 14 00:28:44 2009
New Revision: 70351

Log:
Update PEP:

* Summarize commentary to date.
* Add APOSTROPHE and non-breaking SPACE to the list of separators.
* Add more links to external references.
* Detail issues with the locale module.
* Clarify how proposal II is parsed.



Modified:
   peps/trunk/pep-0378.txt

Modified: peps/trunk/pep-0378.txt
==============================================================================
--- peps/trunk/pep-0378.txt	(original)
+++ peps/trunk/pep-0378.txt	Sat Mar 14 00:28:44 2009
@@ -25,6 +25,16 @@
 users and non-professional programmers find the locale
 approach to be frustrating, arcane and non-obvious.
 
+The locale module presents two other challenges.  First, it is
+a global setting and not suitable for multi-threaded apps that
+need to serve-up requests in multiple locales.  Second, the
+name of a relevant locale (perhaps "de_DE") can vary from
+platform to platform or may not be defined at all.  The docs
+for the locale module describe these and `other challenges`_
+in detail.
+
+.. _`other challenges`:  http://docs.python.org/library/locale.html#background-details-hints-tips-and-caveats
+
 It is not the goal to replace locale or to accommodate every
 possible convention.  The goal is to make a common task easier
 for many users.
@@ -54,17 +64,19 @@
 handled by the "n" specifier in the locale module (albeit only
 for integers).
 
-Visual Basic and its brethren (like MS Excel) use a completely
+Visual Basic and its brethren (like `MS Excel`_) use a completely
 different style and have ultra-flexible custom format
 specifiers like::
 
     "_($* #,##0_)".
 
+.. _`MS Excel`: http://www.brainbell.com/tutorials/ms-office/excel/Create_Custom_Number_Formats.htm
+
 `COBOL`_ uses picture clauses like::
 
-    PIC $***,**9.99CR
+    PICTURE $***,**9.99CR
 
-.. _`COBOL`: http://en.wikipedia.org/wiki/Cobol
+.. _`COBOL`: http://en.wikipedia.org/wiki/Cobol#Syntactic_features
 
 `Common Lisp`_ uses a COLON before the ``~D`` decimal type specifier to
 emit a COMMA as a thousands separator.  The  general form of ``~D`` is
@@ -91,7 +103,7 @@
 Proposal I (from Nick Coghlan)
 ==============================
 
-A comma will be added to the format() specifier mini-language:
+A comma will be added to the format() specifier mini-language::
 
 [[fill]align][sign][#][0][width][,][.precision][type]
 
@@ -124,15 +136,15 @@
 
 Make both the thousands separator and decimal separator user
 specifiable but not locale aware.  For simplicity, limit the
-choices to a COMMA, DOT, SPACE, or UNDERSCORE.
+choices to a COMMA, DOT, SPACE, APOSTROPHE or UNDERSCORE.
+The SPACE can be eitherU +0020 or U+00A0.
 
 Whenever the separator is followed by a precision, it is a
-decimal separator and the optional separator preceding it is a
-thousands separator.  When the precision is absent, the
-context is integral and a lone specifier means a thousands
-separator::
+decimal separator and an optional separator preceding it is a
+thousands separator.  When the precision is absent, a lone
+specifier means a thousands separator::
 
-[[fill]align][sign][#][0][width][tsep|([tsep] dsep precision)][type]
+[[fill]align][sign][#][0][width][tsep][dsep precision]][type]
 
 Examples::
 
@@ -142,13 +154,12 @@
   format(1234, "8 ,f")     -->    ' 1 234,0'
   format(1234, "8d")       -->    '    1234'
   format(1234, "8,d")      -->    '   1,234'
+  format(1234, "8_d")      -->    '   1_234'
 
 This proposal meets mosts needs (except for people wanting
 grouping for hundreds or ten-thousands), but it comes at the
 expense of being a little more complicated to learn and
-remember.  Also, it makes it more challenging to write custom
-__format__ methods that follow the format specification
-mini-language.
+remember.
 
 As shown in the examples, the *width* argument means the total
 length including the thousands separators and decimal separators.
@@ -179,6 +190,32 @@
   to write custom __format__ methods.  That way
   Decimal.__format__ would not have to be written from scratch.
 
+* Antoine Pitrou noted that the provision for a SPACE separator
+  should also allow a non-breaking space (U+00A0).
+
+* A poster on the newgroup, Wolfgang Rohdewald, noted that a
+  convention in Switzerland is use an APOSTROPHE as a
+  thousands separator, ``12`000.99``.
+
+
+Commentary
+==========
+
+* Some commenters do not like the idea of format strings at all
+  and find them to be unreadable.  Suggested alternatives include
+  the COBOL style PICTURE approach or a convenience function with
+  keyword arguments for every possible combination.
+
+* Some newsgroup respondants think there is no place for any
+  scripts that are not internationalized and that it is a step
+  backwards to provide a simple way to hardwire a given convention.
+
+* Another thought is that embedding some particular convention in
+  individual format strings makes it hard to change that convention
+  later.  No workable alternative was suggested but the general idea
+  is to set the convention once and have it apply everywhere (others
+  commented that locale already does this).                                                              
+
 
 Copyright
 =========


More information about the Python-checkins mailing list