Terry Reedy wrote: > Steven Bethard wrote: >> I thought it might be useful for those who don't have time to read a >> million posts to have a summary of what's happened in the formatting >> discussion. > > definitely > >> >> The basic problem is that many APIs in the standard library and >> elsewhere support only %-formatting and not {}-formatting, e.g. >> logging.Formatter accepts:: >> logging.Formatter(fmt="%(asctime)s - %(name)s") >> but not:: >> logging.Formatter(fmt="{asctime} - {name}") >> >> There seems to be mostly agreement that these APIs should at least >> support both formatting styles, and a sizable group (including Guido) >> believe that %-formatting should eventually be phased out (e.g. by >> Python 4). There are a number of competing proposals on how to allow >> such APIs to start accepting {}-format strings: >> >> * Add a parameter which declares the type of format string:: >> logging.Formatter(fmt="{asctime} - {name}", format=BRACES) >> The API code would then switch between %-format and {}-format >> based on the value of that parameter. If %-formatting is to be >> deprecated, this could be done by first deprecating >> format=PERCENTS and requiring format=BRACES, and then changing the >> default to format=BRACES. > > ... > >> * Create translators between %-format and {}-format:: >> assert to_braces("%(asctime)s") == "{asctime}" >> assert to_percents("{asctime}") == "%(asctime)s" >> these could then either be used outside of the API:: >> logging.Formatter(fmt=to_percents("{asctime} - {name}")) >> or they could be used within the API combined with some sort of >> heuristic for guessing whether a {}-format string or a %-format >> string was passed in:: >> logging.Formatter(fmt="{asctime} - {name}") > > How about combining these two. Add an optional form or style=xxx > parameter -- which could also allow DOLLARS for $-formats -- for > resolving ambiguities. If not present, make a reasonable guess. IE, if > string has no '%' and multiple {} pairs, or no {} pairs and multiple %s, > the guess is at least .999 sure. which is to not, not hardly a guess. > The extra arg can be supplied if and when needed. > Maybe if the style is a callable then that's the formatting function? (Or is that asking for trouble? :-)) In that case the style could default to a function which guesses which style is being used and then the appropriate function. > The machinery for this should be not be logging specific, so it can be > used through throughout the library, and exposed so that others can use it. >
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4