]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Restore original tuple repr for grouper. Fixes #654
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 12 Jan 2017 14:53:09 +0000 (15:53 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 12 Jan 2017 14:53:12 +0000 (15:53 +0100)
CHANGES
jinja2/filters.py
tests/test_regression.py

diff --git a/CHANGES b/CHANGES
index f95f41a47576a9e62b003603ab227e6e2b741439..ed9bd0ead794f5af20be3c80a6c353d1ff59411b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,13 @@
 Jinja2 Changelog
 ================
 
+Version 2.9.5
+-------------
+(bugfix release, no release date yet)
+
+- Restored the original repr of the internal `_GroupTuple` because this
+  caused issues with ansible and it was an unintended change.  (#654)
+
 Version 2.9.4
 -------------
 (bugfix release, released on January 10th 2017)
index f4cd7968886bf8d1b641de7ab4e588ad41e32ade..d3726b3b8a01f8f95942036600e2136336ef2da6 100644 (file)
@@ -688,7 +688,13 @@ def do_round(value, precision=0, method='common'):
     return func(value * (10 ** precision)) / (10 ** precision)
 
 
+# Use a regular tuple repr here.  This is what we did in the past and we
+# really want to hide this custom type as much as possible.  In particular
+# we do not want to accidentally expose an auto generated repr in case
+# people start to print this out in comments or something similar for
+# debugging.
 _GroupTuple = namedtuple('_GroupTuple', ['grouper', 'list'])
+_GroupTuple.__repr__ = tuple.__repr__
 
 @environmentfilter
 def do_groupby(environment, value, attribute):
index dbed823f676d2b49d38c65cce8a94e07f74f2b5a..fdb78efb75a744ffae9586b9de60aab052ba707a 100644 (file)
@@ -497,3 +497,10 @@ class TestBug(object):
             'main': '{% for item in [1, 2, 3] %}{% include "inc" %}{% endfor %}',
         }))
         assert env.get_template('main').render() == '123'
+
+    def test_grouper_repr(self):
+        from jinja2.filters import _GroupTuple
+        t = _GroupTuple('foo', [1, 2])
+        assert t.grouper == 'foo'
+        assert t.list == [1, 2]
+        assert repr(t) == "('foo', [1, 2])"