Opened 3 years ago

Closed 6 months ago

#20222 closed Bug (fixed)

Some functions are wrapped into allow_lazy incorrectly

Reported by: void Owned by: bmispelon
Component: Utilities Version: master
Severity: Normal Keywords:
Cc: bmispelon@… Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no


allow_lazy() requires more than one argument. Second and further arguments must be types.
There are a few functions which are wrapped into allow_lazy without *resultclasses specified.

  • django.utils.html.strip_tags
  • django.utils.text.Truncator.chars
  • django.utils.text.Truncator.words
  • django.utils.text.recapitalize
  • django.utils.text.phone2numeric
  • django.utils.text.unescape_string_literal

IPython session, which demonstrates code broken because of that:

In [1]: from django.utils.functional import lazy
In [2]: from django.utils.encoding import force_text
In [3]: from django.utils import six
In [4]: from django.utils.html import strip_tags
In [5]: promise = lazy(lambda:u'hello', six.text_type)()
In [6]: force_text(promise)
Out[6]: u'hello'
In [7]: promise = lazy(lambda:u'hello', six.text_type)()
In [8]: stripped = strip_tags(promise)
In [9]: force_text(stripped)
Out[9]: u'<django.utils.functional.__proxy__ object at 0x101f6ca50>'

Change History (9)

comment:1 Changed 3 years ago by void

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Thanks to bmispelon for pointing that out.

comment:2 Changed 3 years ago by bmispelon

  • Cc bmispelon@… added
  • Easy pickings set
  • Triage Stage changed from Unreviewed to Accepted

comment:3 Changed 3 years ago by bmispelon

  • Owner changed from nobody to bmispelon
  • Status changed from new to assigned

I've started working on this on my branch:

I hope to fix #20221 and #20223 along with this one.

comment:4 Changed 3 years ago by bmispelon

I've prepared a pull request for this ticket that include fixes for 3 other ones:

comment:5 Changed 3 years ago by morty

  • Has patch set

comment:6 Changed 3 years ago by timo

  • Easy pickings unset
  • Patch needs improvement set

No longer merges cleanly.

comment:7 Changed 17 months ago by void

  • Patch needs improvement unset

I've updated bmispelon's patch so it merges cleanly as a pull request 4202:

comment:8 Changed 17 months ago by timgraham

  • Patch needs improvement set

Comments for improvement on the PR.

comment:9 Changed 6 months ago by timgraham

  • Resolution set to fixed
  • Status changed from assigned to closed

Correct me if I'm wrong, but based on the sample shell session, I think this is fixed by #25000.

Note: See TracTickets for help on using tickets.
Back to Top