#32810: django.utils.formats.number_format calculates a value for use_l10n which
isn't re-used for calls to get_format
------------------------------------------------+------------------------
               Reporter:  Keryn Knight          |          Owner:  nobody
                   Type:  Cleanup/optimization  |         Status:  new
              Component:  Utilities             |        Version:  dev
               Severity:  Normal                |       Keywords:
           Triage Stage:  Unreviewed            |      Has patch:  0
    Needs documentation:  0                     |    Needs tests:  0
Patch needs improvement:  0                     |  Easy pickings:  0
                  UI/UX:  0                     |
------------------------------------------------+------------------------
 Currently, the first thing `number_format` does is:

 {{{
     if use_l10n or (use_l10n is None and settings.USE_L10N):
         lang = get_language()
     else:
         lang = None
 }}}

 so that it can pass the `lang` (string/None) and `use_l10n` (boolean/None)
 through to the `get_format` function. The `get_format` function is used 3
 times for the one `number_format` call  (which in turn is used for every
 call to `localize` via `render_value_in_context`)

 The first thing `get_format` does, meanwhile, is much the same:
 {{{
     use_l10n = use_l10n or (use_l10n is None and settings.USE_L10N)
     if use_l10n and lang is None:
         lang = get_language()
 }}}

 As far as I can tell, a small micro-optimisation is available in
 `number_format` to pre-calculate the `use_l10n` value and if it's truthy
 avoid a few comparisons. I don't **think** it's subject to any threadlocal
 values changing in between:

 {{{
 def number_format(value, decimal_pos=None, use_l10n=None,
 force_grouping=False):
     ...
     use_l10n = use_l10n or (use_l10n is None and settings.USE_L10N)
     if use_l10n:
         lang = get_language()
     else:
         lang = None
     ...
 }}}
 At worst it'd continue re-calculating the use_l10n value within
 `get_format` because it's previously been evaluated as falsy, I think.

 (Addendum: Having briefly glanced at it, I don't think this affects/steps
 on the toes of #25762 which sounds like a much bigger/better win)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32810>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.4da04648e4e7d77005fcad19f49dcf93%40djangoproject.com.

Reply via email to