Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-Chameleon for
openSUSE:Factory checked in at 2022-08-02 22:09:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Chameleon (Old)
and /work/SRC/openSUSE:Factory/.python-Chameleon.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Chameleon"
Tue Aug 2 22:09:38 2022 rev:13 rq:992332 version:3.10.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Chameleon/python-Chameleon.changes
2021-05-20 19:25:59.137714797 +0200
+++
/work/SRC/openSUSE:Factory/.python-Chameleon.new.1533/python-Chameleon.changes
2022-08-02 22:10:29.745998008 +0200
@@ -1,0 +2,9 @@
+Tue Aug 2 11:11:29 UTC 2022 - Otto Hollmann <[email protected]>
+
+- version update to 3.10.1
+ * Fix __str__ method of chameleon.exc.TemplateError (#356)
+ * Make scope class dict-like (#305)
+ * Work in FIPS enabled environments (#345)
+ * Fix tab handling issue (#350)
+
+-------------------------------------------------------------------
Old:
----
Chameleon-3.9.1.tar.gz
New:
----
Chameleon-3.10.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Chameleon.spec ++++++
--- /var/tmp/diff_new_pack.OLcb8n/_old 2022-08-02 22:10:30.137999138 +0200
+++ /var/tmp/diff_new_pack.OLcb8n/_new 2022-08-02 22:10:30.141999150 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-Chameleon
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-Chameleon
-Version: 3.9.1
+Version: 3.10.1
Release: 0
Summary: Fast HTML/XML Template Compiler
License: BSD-3-Clause AND BSD-4-Clause AND Python-2.0 AND ZPL-2.1
++++++ Chameleon-3.9.1.tar.gz -> Chameleon-3.10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/CHANGES.rst
new/chameleon-3.10.1/CHANGES.rst
--- old/chameleon-3.9.1/CHANGES.rst 2021-05-14 08:57:55.000000000 +0200
+++ new/chameleon-3.10.1/CHANGES.rst 2022-05-17 14:04:22.000000000 +0200
@@ -1,6 +1,24 @@
Changes
=======
+3.10.1 (2022-05-17)
+-------------------
+
+- Fix __str__ method of chameleon.exc.TemplateError
+ (`#356 <https://github.com/malthe/chameleon/issues/356>`_)
+
+3.10.0 (2022-04-06)
+-------------------
+
+- Make scope class dict-like
+ (`#305 <https://github.com/malthe/chameleon/issues/305>`_)
+
+- Work in FIPS enabled environments
+ (`#345 <https://github.com/malthe/chameleon/issues/345>`_)
+
+- Fix tab handling issue
+ (`#350 <https://github.com/malthe/chameleon/issues/350>`_)
+
3.9.1 (2021-05-14)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/docs/reference.rst
new/chameleon-3.10.1/docs/reference.rst
--- old/chameleon-3.9.1/docs/reference.rst 2021-05-14 08:57:55.000000000
+0200
+++ new/chameleon-3.10.1/docs/reference.rst 2022-05-17 14:04:22.000000000
+0200
@@ -212,6 +212,14 @@
<input type="checkbox" tal:attributes="checked True" />
+This requires ``boolean_attributes`` to be activated, see
:py:class:`PageTemplate configuration options<chameleon.PageTemplate>`::
+
+ template = PageTemplate("<input type="checkbox" tal:attributes="checked
True" />",
+ boolean_attributes={"selected", "checked"})
+ // or
+
+ templates = PageTemplateLoader(path, boolean_attributes={"selected",
"checked"})
+
``tal:condition``
^^^^^^^^^^^^^^^^^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/setup.py
new/chameleon-3.10.1/setup.py
--- old/chameleon-3.9.1/setup.py 2021-05-14 08:57:55.000000000 +0200
+++ new/chameleon-3.10.1/setup.py 2022-05-17 14:04:22.000000000 +0200
@@ -1,4 +1,4 @@
-__version__ = '3.9.1'
+__version__ = '3.10.1'
import os
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/compiler.py
new/chameleon-3.10.1/src/chameleon/compiler.py
--- old/chameleon-3.9.1/src/chameleon/compiler.py 2021-05-14
08:57:55.000000000 +0200
+++ new/chameleon-3.10.1/src/chameleon/compiler.py 2022-05-17
14:04:22.000000000 +0200
@@ -105,7 +105,7 @@
def load_econtext(name):
- return template("getitem(KEY)", KEY=ast.Str(s=name), mode="eval")
+ return template("getname(KEY)", KEY=ast.Str(s=name), mode="eval")
def store_econtext(name):
@@ -620,9 +620,15 @@
>>> parser = tales.ExpressionParser({'python': tales.PythonExpr}, 'python')
>>> engine = functools.partial(ExpressionEngine, parser)
- >>> evaluate = ExpressionEvaluator(engine, {
+ >>> evaluator = ExpressionEvaluator(engine, {
... 'foo': 'bar',
- ... })
+ ... })
+
+ We'll use the following convenience function to test the expression
+ evaluator.
+ >>> from chameleon.utils import Scope
+ >>> def evaluate(d, *args):
+ ... return evaluator(Scope(d), *args)
The evaluation function is passed the local and remote context,
the expression type and finally the expression.
@@ -694,7 +700,7 @@
Any odd name:
>>> test(load('frobnitz'))
- "getitem('frobnitz')"
+ "getname('frobnitz')"
A 'builtin' name will first be looked up via ``get`` allowing fall
back to the global builtin value:
@@ -926,12 +932,6 @@
template program.
"""
- exceptions = NameError, \
- ValueError, \
- AttributeError, \
- LookupError, \
- TypeError
-
defaults = {
'translate': Symbol(simple_translate),
'decode': Builtin("str"),
@@ -1110,7 +1110,7 @@
return functions
def visit_Context(self, node):
- return template("getitem = econtext.__getitem__") + \
+ return template("getname = econtext.get_name") + \
template("get = econtext.get") + \
self.visit(node.node)
@@ -1645,9 +1645,7 @@
self._current_slot.append(slot.name)
- body = template("getitem = econtext.__getitem__") + \
- template("get = econtext.get") + \
- self.visit(slot.node)
+ body = self.visit_Context(slot)
assert self._current_slot.pop() == slot.name
@@ -1678,7 +1676,7 @@
append = template("_slots.appendleft(NAME)", NAME=fun)
assignment = [TryExcept(
- body=template("_slots = getitem(KEY)", KEY=key),
+ body=template("_slots = getname(KEY)", KEY=key),
handlers=[ast.ExceptHandler(body=assignment)],
orelse=append,
)]
@@ -1753,7 +1751,7 @@
outer[:] = list(self._enter_assignment(names)) + outer
outer += template(
- "__iterator, INDEX = getitem('repeat')(key, __iterator)",
+ "__iterator, INDEX = getname('repeat')(key, __iterator)",
key=key, INDEX=index
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/exc.py
new/chameleon-3.10.1/src/chameleon/exc.py
--- old/chameleon-3.9.1/src/chameleon/exc.py 2021-05-14 08:57:55.000000000
+0200
+++ new/chameleon-3.10.1/src/chameleon/exc.py 2022-05-17 14:04:22.000000000
+0200
@@ -189,7 +189,7 @@
# Prepend newlines.
for line in lines:
- text += "\n" + line
+ text += "\n" + safe_native(line)
return text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/parser.py
new/chameleon-3.10.1/src/chameleon/parser.py
--- old/chameleon-3.9.1/src/chameleon/parser.py 2021-05-14 08:57:55.000000000
+0200
+++ new/chameleon-3.10.1/src/chameleon/parser.py 2022-05-17
14:04:22.000000000 +0200
@@ -12,7 +12,7 @@
match_double_hyphen = re.compile(r'--(?!(-)*>)')
match_tag_prefix_and_name = re.compile(
- r'^(?P<prefix></?)(?P<name>([^:\n\r ]+:)?[^ \n\t\r>/]+)'
+ r'^(?P<prefix></?)(?P<name>([^:\n\t\r ]+:)?[^ \n\t\r>/]+)'
r'(?P<suffix>(?P<space>\s*)/?>)?',
re.UNICODE | re.DOTALL)
match_single_attribute = re.compile(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/tales.py
new/chameleon-3.10.1/src/chameleon/tales.py
--- old/chameleon-3.9.1/src/chameleon/tales.py 2021-05-14 08:57:55.000000000
+0200
+++ new/chameleon-3.10.1/src/chameleon/tales.py 2022-05-17 14:04:22.000000000
+0200
@@ -115,11 +115,11 @@
42
"""
- exceptions = NameError, \
- ValueError, \
- AttributeError, \
+ exceptions = AttributeError, \
+ NameError, \
LookupError, \
- TypeError
+ TypeError, \
+ ValueError
ignore_prefix = True
@@ -517,7 +517,7 @@
"""
- exceptions = AttributeError, LookupError, TypeError, NameError, KeyError
+ exceptions = AttributeError, LookupError, TypeError, NameError
def __init__(self, expression):
self.expression = expression
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/chameleon-3.9.1/src/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt
new/chameleon-3.10.1/src/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt
---
old/chameleon-3.9.1/src/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt
1970-01-01 01:00:00.000000000 +0100
+++
new/chameleon-3.10.1/src/chameleon/tests/inputs/127-tags-and-attributes-special-chars.pt
2022-05-17 14:04:22.000000000 +0200
@@ -0,0 +1,4 @@
+<tal:block>
+ <div style="height:97px" class="${'test'}">
+ </div>
+</tal:block>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/tests/outputs/127.pt
new/chameleon-3.10.1/src/chameleon/tests/outputs/127.pt
--- old/chameleon-3.9.1/src/chameleon/tests/outputs/127.pt 1970-01-01
01:00:00.000000000 +0100
+++ new/chameleon-3.10.1/src/chameleon/tests/outputs/127.pt 2022-05-17
14:04:22.000000000 +0200
@@ -0,0 +1,3 @@
+
+ <div style="height:97px" class="test">
+ </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/tests/test_exc.py
new/chameleon-3.10.1/src/chameleon/tests/test_exc.py
--- old/chameleon-3.9.1/src/chameleon/tests/test_exc.py 2021-05-14
08:57:55.000000000 +0200
+++ new/chameleon-3.10.1/src/chameleon/tests/test_exc.py 2022-05-17
14:04:22.000000000 +0200
@@ -1,13 +1,23 @@
from unittest import TestCase
+from chameleon import exc, tokenize
class TestTemplateError(TestCase):
def test_keep_token_location_info(self):
# tokens should not lose information when passed to a TemplateError
- from chameleon import exc, tokenize, utils
token = tokenize.Token('stuff', 5, 'more\nstuff', 'mystuff.txt')
error = exc.TemplateError('message', token)
s = str(error)
self.assertTrue(
'- Location: (line 2: col 0)' in s,
'No location data found\n%s' % s)
+
+ def test_umlaut_exc_to_string(self):
+ # test if an exception is convertable to a string
+ body = u'<p>uumlaut:\xfc</p>'
+ string = body[3:-4]
+ token = tokenize.Token(string, 3, body)
+ e = exc.LanguageError('Invalid define syntax', token)
+ # its fine if we get no exception from the following line
+ str(e)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/utils.py
new/chameleon-3.10.1/src/chameleon/utils.py
--- old/chameleon-3.9.1/src/chameleon/utils.py 2021-05-14 08:57:55.000000000
+0200
+++ new/chameleon-3.10.1/src/chameleon/utils.py 2022-05-17 14:04:22.000000000
+0200
@@ -401,6 +401,15 @@
set_local = dict.__setitem__
def __getitem__(self, key):
+ value = self.get(key, marker)
+ if value is marker:
+ raise KeyError(key)
+ return value
+
+ def __contains__(self, key):
+ return self.get(key, marker) is not marker
+
+ def get(self, key, default=None):
value = dict.get(self, key, marker)
if value is not marker:
return value
@@ -412,7 +421,16 @@
if value is not marker:
return value
- raise NameError(key)
+ return default
+
+ def items(self):
+ raise NotImplementedError()
+
+ def keys(self):
+ raise NotImplementedError()
+
+ def values(self):
+ raise NotImplementedError()
@property
def vars(self):
@@ -428,6 +446,12 @@
root = getattr(self, "_root", self)
root[name] = value
+ def get_name(self, key):
+ value = self.get(key, marker)
+ if value is marker:
+ raise NameError(key)
+ return value
+
setLocal = set_local
setGlobal = set_global
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/chameleon-3.9.1/src/chameleon/zpt/template.py
new/chameleon-3.10.1/src/chameleon/zpt/template.py
--- old/chameleon-3.9.1/src/chameleon/zpt/template.py 2021-05-14
08:57:55.000000000 +0200
+++ new/chameleon-3.10.1/src/chameleon/zpt/template.py 2022-05-17
14:04:22.000000000 +0200
@@ -1,6 +1,6 @@
from functools import partial
from os.path import dirname
-from hashlib import md5
+from hashlib import sha256
from ..i18n import simple_translate
from ..tales import PythonExpr
@@ -309,7 +309,7 @@
hex = super(PageTemplate, self).digest(body, names)
if isinstance(hex, unicode_string):
hex = hex.encode('utf-8')
- digest = md5(hex)
+ digest = sha256(hex)
digest.update(';'.join(names).encode('utf-8'))
for attr in (
@@ -322,7 +322,7 @@
(";%s=%s" % (attr, str(v))).encode('ascii')
)
- return digest.hexdigest()
+ return digest.hexdigest()[:32]
def _builtins(self):
return {