Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-dominate for openSUSE:Factory
checked in at 2021-03-12 13:33:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dominate (Old)
and /work/SRC/openSUSE:Factory/.python-dominate.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dominate"
Fri Mar 12 13:33:28 2021 rev:6 rq:878439 version:2.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dominate/python-dominate.changes
2020-09-21 17:47:01.529116699 +0200
+++
/work/SRC/openSUSE:Factory/.python-dominate.new.2401/python-dominate.changes
2021-03-12 13:33:29.950340937 +0100
@@ -1,0 +2,6 @@
+Fri Mar 12 04:08:22 UTC 2021 - Steve Kowalik <[email protected]>
+
+- Update to 2.6.0:
+ * Add get_current() to return the current active element in a with context
+
+-------------------------------------------------------------------
Old:
----
dominate-2.5.2.tar.gz
New:
----
dominate-2.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dominate.spec ++++++
--- /var/tmp/diff_new_pack.jZzltD/_old 2021-03-12 13:33:32.022343843 +0100
+++ /var/tmp/diff_new_pack.jZzltD/_new 2021-03-12 13:33:32.026343848 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-dominate
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 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-dominate
-Version: 2.5.2
+Version: 2.6.0
Release: 0
Summary: Python library for creating and manipulating HTML documents
License: GPL-3.0-only
++++++ dominate-2.5.2.tar.gz -> dominate-2.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/PKG-INFO new/dominate-2.6.0/PKG-INFO
--- old/dominate-2.5.2/PKG-INFO 2020-08-22 21:21:42.000000000 +0200
+++ new/dominate-2.6.0/PKG-INFO 2020-10-21 09:01:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: dominate
-Version: 2.5.2
+Version: 2.6.0
Summary: Dominate is a Python library for creating and manipulating HTML
documents using an elegant DOM API.
Home-page: https://github.com/Knio/dominate/
Author: Tom Flanagan and Jake Wharton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate/_version.py
new/dominate-2.6.0/dominate/_version.py
--- old/dominate-2.5.2/dominate/_version.py 2020-08-22 21:20:26.000000000
+0200
+++ new/dominate-2.6.0/dominate/_version.py 2020-10-21 08:57:28.000000000
+0200
@@ -1 +1 @@
-__version__ = '2.5.2'
+__version__ = '2.6.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate/dom_tag.py
new/dominate-2.6.0/dominate/dom_tag.py
--- old/dominate-2.5.2/dominate/dom_tag.py 2020-08-22 21:18:41.000000000
+0200
+++ new/dominate-2.6.0/dominate/dom_tag.py 2020-10-21 08:57:28.000000000
+0200
@@ -43,6 +43,7 @@
except ImportError:
greenlet = None
+
def _get_thread_context():
context = [threading.current_thread()]
if greenlet:
@@ -57,11 +58,11 @@
# modified
is_inline = False
- frame = namedtuple('frame', ['tag', 'items', 'used'])
def __new__(_cls, *args, **kwargs):
'''
- Check if bare tag is being used a a decorator.
+ Check if bare tag is being used a a decorator
+ (called with a single function arg).
decorate the function and return
'''
if len(args) == 1 and isinstance(args[0], Callable) \
@@ -75,6 +76,7 @@
return f
return object.__new__(_cls)
+
def __init__(self, *args, **kwargs):
'''
Creates a new tag. Child tags should be passed as arguments and attributes
@@ -105,28 +107,35 @@
self._ctx = None
self._add_to_ctx()
- def _add_to_ctx(self):
- ctx = dom_tag._with_contexts[_get_thread_context()]
- if ctx and ctx[-1]:
- self._ctx = ctx[-1]
- ctx[-1].items.append(self)
- # stack of (root_tag, [new_tags], set(used_tags))
+ # context manager
+ frame = namedtuple('frame', ['tag', 'items', 'used'])
+ # stack of frames
_with_contexts = defaultdict(list)
+ def _add_to_ctx(self):
+ stack = dom_tag._with_contexts.get(_get_thread_context())
+ if stack:
+ self._ctx = stack[-1]
+ stack[-1].items.append(self)
+
+
def __enter__(self):
- ctx = dom_tag._with_contexts[_get_thread_context()]
- ctx.append(dom_tag.frame(self, [], set()))
+ stack = dom_tag._with_contexts[_get_thread_context()]
+ stack.append(dom_tag.frame(self, [], set()))
return self
+
def __exit__(self, type, value, traceback):
- ctx = dom_tag._with_contexts[_get_thread_context()]
- slf, items, used = ctx[-1]
- ctx[-1] = None
- for item in items:
- if item in used: continue
+ thread_id = _get_thread_context()
+ stack = dom_tag._with_contexts[thread_id]
+ frame = stack.pop()
+ for item in frame.items:
+ if item in frame.used: continue
self.add(item)
- ctx.pop()
+ if not stack:
+ del dom_tag._with_contexts[thread_id]
+
def __call__(self, func):
'''
@@ -146,6 +155,7 @@
return func(*args, **kwargs) or tag
return f
+
def set_attribute(self, key, value):
'''
Add or update the value of an attribute.
@@ -178,6 +188,7 @@
if not isinstance(i, dom_tag): return
i.setdocument(doc)
+
def add(self, *args):
'''
Add new child tags.
@@ -192,9 +203,9 @@
self.children.append(obj)
elif isinstance(obj, dom_tag):
- ctx = dom_tag._with_contexts[_get_thread_context()]
- if ctx and ctx[-1]:
- ctx[-1].used.add(obj)
+ stack = dom_tag._with_contexts.get(_get_thread_context())
+ if stack:
+ stack[-1].used.add(obj)
self.children.append(obj)
obj.parent = self
obj.setdocument(self.document)
@@ -215,18 +226,22 @@
return args
+
def add_raw_string(self, s):
self.children.append(s)
+
def remove(self, obj):
self.children.remove(obj)
+
def clear(self):
for i in self.children:
if isinstance(i, dom_tag) and i.parent is self:
i.parent = None
self.children = []
+
def get(self, tag=None, **kwargs):
'''
Recursively searches children for tags of a certain
@@ -253,6 +268,7 @@
results.extend(child.get(tag, **kwargs))
return results
+
def __getitem__(self, key):
'''
Returns the stored value of the specified attribute or child
@@ -275,12 +291,14 @@
'child tags and attributes, respectively.')
__getattr__ = __getitem__
+
def __len__(self):
'''
Number of child elements.
'''
return len(self.children)
+
def __bool__(self):
'''
Hack for "if x" and __len__
@@ -288,12 +306,14 @@
return True
__nonzero__ = __bool__
+
def __iter__(self):
'''
Iterates over child elements.
'''
return self.children.__iter__()
+
def __contains__(self, item):
'''
Checks recursively if item is in children tree.
@@ -301,6 +321,7 @@
'''
return bool(self.get(item))
+
def __iadd__(self, obj):
'''
Reflexive binary addition simply adds tag as a child.
@@ -313,10 +334,12 @@
return self.render()
__str__ = __unicode__
+
def render(self, indent=' ', pretty=True, xhtml=False):
data = self._render([], 0, indent, pretty, xhtml)
return u''.join(data)
+
def _render(self, sb, indent_level, indent_str, pretty, xhtml):
pretty = pretty and self.is_pretty
@@ -365,6 +388,7 @@
return inline
+
def __repr__(self):
name = '%s.%s' % (self.__module__, type(self).__name__)
@@ -432,18 +456,30 @@
return (attribute, value)
+_get_current_none = object()
+def get_current(default=_get_current_none):
+ '''
+ get the current tag being used as a with context or decorated function.
+ if no context is active, raises ValueError, or returns the default, if
provided
+ '''
+ h = _get_thread_context()
+ ctx = dom_tag._with_contexts.get(h, None)
+ if ctx:
+ return ctx[-1].tag
+ if default is _get_current_none:
+ raise ValueError('no current context')
+ return default
+
+
def attr(*args, **kwargs):
'''
Set attributes on the current active tag context
'''
- ctx = dom_tag._with_contexts[_get_thread_context()]
- if ctx and ctx[-1]:
- dicts = args + (kwargs,)
- for d in dicts:
- for attr, value in d.items():
- ctx[-1].tag.set_attribute(*dom_tag.clean_pair(attr, value))
- else:
- raise ValueError('not in a tag context')
+ c = get_current()
+ dicts = args + (kwargs,)
+ for d in dicts:
+ for attr, value in d.items():
+ c.set_attribute(*dom_tag.clean_pair(attr, value))
# escape() is used in render
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate/tags.py
new/dominate-2.6.0/dominate/tags.py
--- old/dominate-2.5.2/dominate/tags.py 2020-08-22 21:18:41.000000000 +0200
+++ new/dominate-2.6.0/dominate/tags.py 2020-10-21 08:57:28.000000000 +0200
@@ -18,7 +18,7 @@
Public License along with Dominate. If not, see
<http://www.gnu.org/licenses/>.
'''
-from .dom_tag import dom_tag, attr
+from .dom_tag import dom_tag, attr, get_current
from .dom1core import dom1core
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate/util.py
new/dominate-2.6.0/dominate/util.py
--- old/dominate-2.5.2/dominate/util.py 2020-03-07 06:09:56.000000000 +0100
+++ new/dominate-2.6.0/dominate/util.py 2020-10-21 08:57:28.000000000 +0200
@@ -21,8 +21,8 @@
'''
import re
-from .dom_tag import dom_tag
+from .dom_tag import dom_tag
try:
basestring = basestring
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate.egg-info/PKG-INFO
new/dominate-2.6.0/dominate.egg-info/PKG-INFO
--- old/dominate-2.5.2/dominate.egg-info/PKG-INFO 2020-08-22
21:21:42.000000000 +0200
+++ new/dominate-2.6.0/dominate.egg-info/PKG-INFO 2020-10-21
09:01:29.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: dominate
-Version: 2.5.2
+Version: 2.6.0
Summary: Dominate is a Python library for creating and manipulating HTML
documents using an elegant DOM API.
Home-page: https://github.com/Knio/dominate/
Author: Tom Flanagan and Jake Wharton
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/dominate.egg-info/SOURCES.txt
new/dominate-2.6.0/dominate.egg-info/SOURCES.txt
--- old/dominate-2.5.2/dominate.egg-info/SOURCES.txt 2020-08-22
21:21:42.000000000 +0200
+++ new/dominate-2.6.0/dominate.egg-info/SOURCES.txt 2020-10-21
09:01:29.000000000 +0200
@@ -17,6 +17,7 @@
dominate.egg-info/top_level.txt
tests/test_document.py
tests/test_dom1core.py
+tests/test_dominate.py
tests/test_html.py
tests/test_svg.py
tests/test_utils.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/tests/test_dominate.py
new/dominate-2.6.0/tests/test_dominate.py
--- old/dominate-2.5.2/tests/test_dominate.py 1970-01-01 01:00:00.000000000
+0100
+++ new/dominate-2.6.0/tests/test_dominate.py 2020-10-21 08:57:28.000000000
+0200
@@ -0,0 +1,18 @@
+import pytest
+
+import dominate
+from dominate import tags
+from dominate import util
+
+def test_version():
+ import dominate
+ version = '2.6.0'
+ assert dominate.version == version
+ assert dominate.__version__ == version
+
+
+def test_context():
+ id1 = dominate.dom_tag._get_thread_context()
+ id2 = dominate.dom_tag._get_thread_context()
+ assert id1 == id2
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/tests/test_html.py
new/dominate-2.6.0/tests/test_html.py
--- old/dominate-2.5.2/tests/test_html.py 2020-08-22 21:20:51.000000000
+0200
+++ new/dominate-2.6.0/tests/test_html.py 2020-10-21 08:57:28.000000000
+0200
@@ -1,3 +1,4 @@
+import dominate
from dominate.tags import *
import pytest
@@ -6,12 +7,6 @@
except NameError:
xrange = range
-def test_version():
- import dominate
- version = '2.5.2'
- assert dominate.version == version
- assert dominate.__version__ == version
-
def test_arguments():
assert html(body(h1('Hello, pyy!'))).render() == \
@@ -29,7 +24,7 @@
cls="mydiv",
data_name='foo',
onclick='alert(1);').render() == \
-'''<div checked="checked" class="mydiv" data-name="foo" id="4"
onclick="alert(1);"></div>'''
+ '''<div checked="checked" class="mydiv" data-name="foo" id="4"
onclick="alert(1);"></div>'''
def test_repr():
@@ -77,15 +72,15 @@
</ul>'''
-# copy rest of examples here
-
-
def test_context_manager():
+ other = div()
h = ul()
with h:
li('One')
li('Two')
li('Three')
+ # added to other, so not added to h
+ other += li('Four')
assert h.render() == \
'''<ul>
@@ -186,6 +181,22 @@
<pre><></pre>'''
+def test_get_context():
+ with pytest.raises(ValueError):
+ d = get_current()
+
+ d = get_current(None)
+ assert d is None
+
+ with div() as d1:
+ d2 = span()
+ with d2:
+ d2p = get_current()
+ d1p = get_current()
+ assert d1 is d1p
+ assert d2 is d2p
+
+
def test_attributes():
d = div()
d['id'] = 'foo'
@@ -248,6 +259,14 @@
assert d.render() == '<!--Hi there-->'
assert div(d).render() == '<div>\n <!--Hi there-->\n</div>'
+ d = comment('Hi ie user', condition='IE 6')
+ assert d.render() == '<!--[if IE 6]>Hi ie user<![endif]-->'
+
+ d = comment(div('Hi non-ie user'), condition='!IE', downlevel='revealed')
+ assert d.render() == '''<![if !IE]>
+<div>Hi non-ie user</div>
+<![endif]>'''
+
def test_boolean_attributes():
assert input_(type="checkbox", checked=True).render() == \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dominate-2.5.2/tests/test_utils.py
new/dominate-2.6.0/tests/test_utils.py
--- old/dominate-2.5.2/tests/test_utils.py 2018-09-25 04:45:41.000000000
+0200
+++ new/dominate-2.6.0/tests/test_utils.py 2020-10-21 08:57:28.000000000
+0200
@@ -1,6 +1,9 @@
+import pytest
+
from dominate.tags import *
from dominate import util
+
def test_include():
import os
try:
@@ -18,6 +21,7 @@
except:
pass
+
def test_system():
d = div()
d += util.system('echo Hello World')
@@ -27,6 +31,7 @@
def test_unescape():
assert util.unescape('&<> ') == '&<> '
+
def test_url():
assert util.url_escape('hi there?') == 'hi%20there%3F'
- assert util.url_unescape('hi%20there%3f') == 'hi there?'
\ No newline at end of file
+ assert util.url_unescape('hi%20there%3f') == 'hi there?'