python-babel / flask-babel

i18n and l10n support for Flask based on Babel and pytz
https://python-babel.github.io/flask-babel/
Other
432 stars 159 forks source link

Pass extra args to babel functions (decimal_quantization) #142

Closed wjdp closed 4 years ago

wjdp commented 5 years ago

Babel have added decimal_quantization to format_decimal, format_currency, format_percent, and format_scientific. Flask-Babel cannot pass this arg through when using the equivalent proxy functions so users cannot use these new features.

For reference here is Flask-Babel's format_percent

def format_percent(number, format=None):
    """Return formatted percent value for the locale in request

    :param number: the number to format
    :param format: the format to use
    :return: the formatted percent number
    :rtype: unicode
    """
    locale = get_locale()
    return numbers.format_percent(number, format=format, locale=locale)

And the signature of the underlying Babel function:

def format_percent(number, format=None, locale=LC_NUMERIC, decimal_quantization=True):

Should Flask-Babel hard code args in like this, or should it use the *args, **kwargs pattern to pass through extra args to the underlying Babel functions?

TkTech commented 5 years ago

A great many of these methods are just dumb wrappers around the babel method, passing the locale and the rest unchanged. I've been contemplating some alternatives to prevent us from having to maintain them. We could reflect all of the flask-babel bindings, checking the signature (inspect.getargspec/inspect.signature) of the babel method to see if it takes a locale kwarg and fetching it if so.

TkTech commented 4 years ago

Removing this method in favor of direct imports from babel in v2. See #164.