#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.