| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
Previously it was an error with confusing error message.
 | 
| | 
| 
| 
| 
| 
| 
|  | 
in format specifier (GH-22036)
* Fixed `f-string/str.format` error description when using two `,` in format specifier.
Co-authored-by: millefalcon <hanish0019@hmail.com>
 | 
| | 
| 
| 
|  | 
data. (GH-19345)
 | 
| | 
| 
| 
| 
|  | 
mode. (GH-16329)
Co-authored-by: Victor Stinner <vstinner@python.org>
 | 
| | 
| 
| 
| 
|  | 
calc_number_widths -> PyObject *number
fill_number -> Py_ssize_t d_end
 | 
| | 
| 
| 
|  | 
(GH-18709)
 | 
| | 
| 
|  | 
Replace direct access to PyObject.ob_type with Py_TYPE().
 | 
| | 
| 
|  | 
numbers's -> number's
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Fix str.format(), float.__format__() and complex.__format__() methods
for non-ASCII decimal point when using the "n" formatter.
Changes:
* Rewrite _PyUnicode_InsertThousandsGrouping(): it now requires
  a _PyUnicodeWriter object for the buffer and a Python str object
  for digits.
* Rename FILL() macro to unicode_fill(), convert it to static inline function,
  add "assert(0 <= start);" and rework its code.
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
locale.localeconv() now sets temporarily the LC_CTYPE locale to the
LC_MONETARY locale if the two locales are different and monetary
strings are non-ASCII. This temporary change affects other threads.
Changes:
* locale.localeconv() can now set LC_CTYPE to LC_MONETARY to decode
  monetary fields.
* Add LocaleInfo.grouping_buffer: copy localeconv() grouping string
  since it can be replaced anytime if a different thread calls
  localeconv().
* _Py_GetLocaleconvNumeric() now requires a "struct lconv *"
  structure, so locale.localeconv() now longer calls localeconv()
  twice. Moreover, the function now requires all arguments to be
  non-NULL.
* Rename STATIC_LOCALE_INFO_INIT to LocaleInfo_STATIC_INIT.
* Move _Py_GetLocaleconvNumeric() definition from fileutils.h
  to pycore_fileutils.h. pycore_fileutils.h now includes locale.h.
* The _locale module is now built with Py_BUILD_CORE defined.
 | 
| | 
| 
| 
|  | 
type specifier. (GH-9666)
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
* Add _Py_GetLocaleconvNumeric() function: decode decimal_point and
  thousands_sep fields of localeconv() from the LC_NUMERIC encoding,
  rather than decoding from the LC_CTYPE encoding.
* Modify locale.localeconv() and "n" formatter of str.format() (for
  int, float and complex to use _Py_GetLocaleconvNumeric()
  internally.
 | 
| | 
| 
|  | 
Patch by Pablo.
 | 
| | 
| 
| 
| 
| 
| 
|  | 
* Add Py_UNREACHABLE() as an alias to abort().
* Use Py_UNREACHABLE() instead of assert(0)
* Convert more unreachable code to use Py_UNREACHABLE()
* Document Py_UNREACHABLE() and a few other macros.
 | 
| | 
| 
| 
|  | 
(#3157)
 | 
| |\   | 
 | 
| | |  | 
 | 
| | |  | 
 | 
| | |  | 
 | 
| | |  | 
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| |  | 
numbers.  Patch by Stefan Behnel.
 | 
| |\ \  
| |/   | 
 | 
| | |  | 
 | 
| |/   | 
 | 
| | 
| 
| 
|  | 
Patch by Torsten Landschoff.
 | 
| | 
| 
| 
|  | 
methods.
 | 
| |  | 
 | 
| |\  
| | 
| | 
| |  | 
error messages and comments.
 | 
| | | 
| | 
| | 
| |  | 
error messages and comments.
 | 
| | |  | 
 | 
| |\ \  
| |/  
| |   
| |    | 
float.__format__() and complex.__format__().
 | 
| | | 
| | 
| | 
| |  | 
complex.__format__().
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| |  | 
compare two Unicode kinds
 | 
| | | 
| | 
| | 
| |  | 
when possible
 | 
| |\ \  
| |/  
| |   
| |   
| |   
| |   
| |   
| |    | 
in the interpreter.
I've left a couple of them in: zlib (third-party lib), getaddrinfo.c
(doesn't include Python.h, and probably obsolete), _sre.c (legitimate
use for the re.LOCALE flag), mpdecimal (needs to build without Python.h).
 | 
| | |\  
| | | 
| | | 
| | | 
| | | 
| | | 
| | | 
| | |  | 
in the interpreter.
I've left a couple of them in: zlib (third-party lib), getaddrinfo.c
(doesn't include Python.h, and probably obsolete), _sre.c (legitimate
use for the re.LOCALE flag), mpdecimal (needs to build without Python.h).
 | 
| |/ /  
| |   
| |   
| |   
| |   
| |   
| |   
| |   
| |   
| |    | 
- Use _PyLong_FormatWriter() instead of formatlong() when possible, to avoid
   a temporary buffer
 - Enable the fast path when width is smaller or equals to the length,
   and when the precision is bigger or equals to the length
 - Add unit tests!
 - formatlong() uses PyUnicode_Resize() instead of _PyUnicode_FromASCII()
   to resize the output string
 | 
| | |  | 
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| |  | 
Found by Clang's static analyzer.
 | 
| | |  | 
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
and str.format(args)
 * Formatting string, int, float and complex use the _PyUnicodeWriter API. It
   avoids a temporary buffer in most cases.
 * Add _PyUnicodeWriter_WriteStr() to restore the PyAccu optimization: just
   keep a reference to the string if the output is only composed of one string
 * Disable overallocation when formatting the last argument of str%args and
   str.format(args)
 * Overallocation allocates at least 100 characters: add min_length attribute
   to the _PyUnicodeWriter structure
 * Add new private functions: _PyUnicode_FastCopyCharacters(),
   _PyUnicode_FastFill() and _PyUnicode_FromASCII()
The speed up is around 20% in average.
 | 
| | |  | 
 | 
| | |  | 
 | 
| | | 
| | 
| | 
| |  | 
(e.g. ps_aF)
 | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| | 
| |  | 
* Decode thousands separator and decimal point using PyUnicode_DecodeLocale()
   (from the locale encoding), instead of decoding them implicitly from latin1
 * Remove _PyUnicode_InsertThousandsGroupingLocale(), it was not used
 * Change _PyUnicode_InsertThousandsGrouping() API to return the maximum
   character if unicode is NULL
 * Replace MIN/MAX macros by Py_MIN/Py_MAX
 * stringlib/undef.h undefines STRINGLIB_IS_UNICODE
 * stringlib/localeutil.h only supports Unicode
 | 
| | |  | 
 |