summaryrefslogtreecommitdiff
path: root/dev-python/genshi
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 20:57:42 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 20:57:42 +0100
commit1798c4aeca70ac8d0a243684d6a798fbc65735f8 (patch)
treee48e19cb6fa03de18e1c63e1a93371b7ebc4eb56 /dev-python/genshi
parentd87262dd706fec50cd150aab3e93883b6337466d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-python/genshi')
-rw-r--r--dev-python/genshi/Manifest8
-rw-r--r--dev-python/genshi/files/genshi-0.7-fix_tests_failure_with_python27.patch25
-rw-r--r--dev-python/genshi/files/genshi-0.7-issue566.patch57
-rw-r--r--dev-python/genshi/files/genshi-0.7-issue582.patch364
-rw-r--r--dev-python/genshi/files/genshi-0.7-issue602.patch114
-rw-r--r--dev-python/genshi/genshi-0.7-r1.ebuild46
-rw-r--r--dev-python/genshi/genshi-0.7.ebuild39
-rw-r--r--dev-python/genshi/metadata.xml8
8 files changed, 0 insertions, 661 deletions
diff --git a/dev-python/genshi/Manifest b/dev-python/genshi/Manifest
deleted file mode 100644
index fbb03930a38a..000000000000
--- a/dev-python/genshi/Manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-AUX genshi-0.7-fix_tests_failure_with_python27.patch 1093 BLAKE2B dc42ccdef1fff73c61687f13fef4c724a4ddff9e436d4d5a2613c31ce8cfe6cf26ddcd2ad04c20050d0a1e6a0f2e4ea9bb5eb54188e989ea6dccfb3909f58a0f SHA512 adf85e1c13c691b1dbbaeea4725a9b5a8ff8d7c6d485196e3537b6e3f6beca6eeb43a7fe452cdfc4612c8be39e9495606377f17854d0778eabd95db13d40d629
-AUX genshi-0.7-issue566.patch 2230 BLAKE2B b981199487dba054af22221958b8b9489a87d40e905b6f5d79713e9f8892d5a0161601ac708d33cf536c27221dc9fe28b992fa2ace16193f94509316e5ad05ae SHA512 a1d9223326ef84566c2f5a4be82012295e1918eceb21fdfaa0f74f28bb21e95646a8188331abebb0e3b1b5cb12ba50d2917eba1d74ea6254581fe3acdddf1b80
-AUX genshi-0.7-issue582.patch 12766 BLAKE2B e92c3777b5ddfdf3cbe91455c541639b0377534b8a8f40b8ea852a582276366fb687890738af0aa9d3a7cec8cd87549d2594fe94207ca6f4704826df34d40895 SHA512 100f2e76d4e9fdad8dbe9c1f70111be597dbdfd5d3efe9d6c4908fa789bc7300311346929106606185834870a8999abe2165ccac3efa94560543c7c5100f9d24
-AUX genshi-0.7-issue602.patch 4504 BLAKE2B a65d56df060e32083d9836b65c96f9f45f90d6ad27bbcc465e1bf9782b0c619a0b2747c0a7691a52390362dc9034ff90f4fedf01a1e8dc51c6d2ae2c8b3d2413 SHA512 59a47ac114065aa398b4795880a02ee98d9605b1a52b53221c4c0efde28b43473d773b9f84ce7c1b954160b5103f53566d739fe39842e6dc6efb6edc61172999
-DIST Genshi-0.7.tar.gz 491579 BLAKE2B 1ef490d6badcd483ab01e46c361964154bebe79ced78096a3e7422394d500597f0095bcbffd9f81ea3a58bc651f131698e539409101274c568135e833adbdb04 SHA512 2d0042d4da4566725ddd80b73c5b7be09f479f5529e4aa69903edc2a98905ff6de42a0d5a6f02986d7962deb7740c4a3acf6955a8b77fdb42d3cf4ca037de6bf
-EBUILD genshi-0.7-r1.ebuild 1091 BLAKE2B dffbcb837e00e8444453918260a40c5b618bdb994a65b36b58423f84f77eb20b58458a52e54b5f2bd7da81d3c81f57ab155c1ca10beffde40f8e250027dfca2b SHA512 2684ac0769a3688caa9f55ad8fd580ac2e34759d247b89059dc838dec0713b25aea56427dbb6a09828661cf5d3c9b5200d250b4f2ef05385c666b2a25b6740ae
-EBUILD genshi-0.7.ebuild 866 BLAKE2B 2ea4199b983508ea51897560c373a5506e7ca956738c9c81bd030ce1f2183d54bbe4b4c456c967d0f4dc50b8907fca8ad73ef0bd81d98a25dec6d031615fed2d SHA512 1a8f56fad6431dce908301515598354a49e929f503d0cd920650f2111e65ceec9577cde31b0473264ab97493c6ca3b1eb15f797561f4c2a205f94059bbc83533
-MISC metadata.xml 246 BLAKE2B 3a28b3bb42a0352827a446ea608867a7782fe682458527ef441a528a22c9f951dc203639934a69ffb520f63aadce3037df28bf8c5304b3a5921b336142f9f246 SHA512 3245fb694492b2f698fb63aac02e66fb8a94fe35eabda45df4790bec043a1ea552e112315334001902f070093bb73e7b741aa3004757404aed97ebdb86cc9fbc
diff --git a/dev-python/genshi/files/genshi-0.7-fix_tests_failure_with_python27.patch b/dev-python/genshi/files/genshi-0.7-fix_tests_failure_with_python27.patch
deleted file mode 100644
index 4f3467d64815..000000000000
--- a/dev-python/genshi/files/genshi-0.7-fix_tests_failure_with_python27.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7f3552a9373fadd2d37ff592769ba6c65755eea5 Mon Sep 17 00:00:00 2001
-From: SVN-Git Migration <python-modules-team@lists.alioth.debian.org>
-Date: Thu, 8 Oct 2015 09:13:47 -0700
-Subject: Skip test which still fails in Python 2.7.6.
-
-Author: Barry Warsaw <barry@debian.org>, Arnaud Fontaine <arnau@debian.org>
-Bug: http://genshi.edgewall.org/ticket/500
-
-Patch-Name: fix_tests_failure_with_python27.patch
----
- genshi/filters/tests/test_html.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
-index 0c6cfe1..a8cfa04 100644
---- a/genshi/filters/tests/test_html.py
-+++ b/genshi/filters/tests/test_html.py
-@@ -410,6 +410,7 @@ class HTMLSanitizerTestCase(unittest.TestCase):
- html = HTML(u'&junk;')
- self.assertEquals('&amp;junk;', (html | HTMLSanitizer()).render())
-
-+ @unittest.skip('http://genshi.edgewall.org/ticket/500#comment:3')
- def test_sanitize_remove_script_elem(self):
- html = HTML(u'<script>alert("Foo")</script>')
- self.assertEquals('', (html | HTMLSanitizer()).render())
diff --git a/dev-python/genshi/files/genshi-0.7-issue566.patch b/dev-python/genshi/files/genshi-0.7-issue566.patch
deleted file mode 100644
index 70fc8ea85e64..000000000000
--- a/dev-python/genshi/files/genshi-0.7-issue566.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From fafbc4296902b2259c23d2ce55996b0127726b4f Mon Sep 17 00:00:00 2001
-From: SVN-Git Migration <python-modules-team@lists.alioth.debian.org>
-Date: Thu, 8 Oct 2015 09:13:49 -0700
-Subject: Fix an IndexError preventing Genshi for uploading attachments in
-
- Trac for users with non-English language settings.
-Origin: http://genshi.edgewall.org/changeset/1243?format=diff&new=1243
-Bug: http://genshi.edgewall.org/ticket/566
-
-Patch-Name: issue566.patch
----
- genshi/filters/i18n.py | 8 +++++++-
- genshi/filters/tests/i18n.py | 12 ++++++++++++
- 2 files changed, 19 insertions(+), 1 deletion(-)
-
-diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
-index dfb52b8..8f2d25c 100644
---- a/genshi/filters/i18n.py
-+++ b/genshi/filters/i18n.py
-@@ -1048,7 +1048,13 @@ class MessageBuffer(object):
-
- while parts:
- order, string = parts.pop(0)
-- events = self.events[order].pop(0)
-+ events = self.events[order]
-+ if events:
-+ events = events.pop(0)
-+ else:
-+ # create a dummy empty text event so any remaining
-+ # part of the translation can be processed.
-+ events = [(TEXT, "", (None, -1, -1))]
- parts_counter[order].pop()
-
- for event in events:
-diff --git a/genshi/filters/tests/i18n.py b/genshi/filters/tests/i18n.py
-index 212d5f6..b36a30b 100644
---- a/genshi/filters/tests/i18n.py
-+++ b/genshi/filters/tests/i18n.py
-@@ -928,6 +928,18 @@ class MsgDirectiveTestCase(unittest.TestCase):
- """</p></html>""",
- tmpl.generate(first="FIRST", second="SECOND").render())
-
-+ def test_translate_i18n_msg_ticket_404_regression(self):
-+ tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
-+ xmlns:i18n="http://genshi.edgewall.org/i18n">
-+ <h1 i18n:msg="name">text <a>$name</a></h1>
-+ </html>""")
-+ gettext = lambda s: u'head [1:%(name)s] tail'
-+ translator = Translator(gettext)
-+ translator.setup(tmpl)
-+ self.assertEqual("""<html>
-+ <h1>head <a>NAME</a> tail</h1>
-+ </html>""", tmpl.generate(name='NAME').render())
-+
-
- class ChooseDirectiveTestCase(unittest.TestCase):
-
diff --git a/dev-python/genshi/files/genshi-0.7-issue582.patch b/dev-python/genshi/files/genshi-0.7-issue582.patch
deleted file mode 100644
index fbcab626d6c4..000000000000
--- a/dev-python/genshi/files/genshi-0.7-issue582.patch
+++ /dev/null
@@ -1,364 +0,0 @@
-From 554fa3428bea3039decfd9064b860c753b2637a1 Mon Sep 17 00:00:00 2001
-From: SVN-Git Migration <python-modules-team@lists.alioth.debian.org>
-Date: Thu, 8 Oct 2015 09:13:48 -0700
-Subject: Make genshi 0.7 compatible with Python 3.4.
-
-Origin: http://genshi.edgewall.org/changeset/1252?format=diff&new=1252
-Bug: http://genshi.edgewall.org/ticket/582
-Forwarded: not-needed
-
-Patch-Name: issue582.patch
----
- doc/upgrade.txt | 8 ++---
- genshi/compat.py | 10 +++++-
- genshi/filters/tests/test_html.py | 14 ++++++---
- genshi/template/astutil.py | 66 ++++++++++++++++++++++++++++-----------
- genshi/template/eval.py | 37 +++++++++++++---------
- genshi/template/tests/eval.py | 23 ++++++++++++++
- run_benchmarks.sh | 31 ++++++++++++++++++
- setup.py | 6 +++-
- 8 files changed, 151 insertions(+), 44 deletions(-)
- create mode 100644 run_benchmarks.sh
-
-diff --git a/doc/upgrade.txt b/doc/upgrade.txt
-index b240eda..ad4c080 100644
---- a/doc/upgrade.txt
-+++ b/doc/upgrade.txt
-@@ -7,11 +7,11 @@ Upgrading Genshi
- :depth: 2
- .. sectnum::
-
--------------------------------------------------------
--Upgrading from Genshi 0.6.x to the development version
--------------------------------------------------------
-+-------------------------------------------
-+Upgrading from Genshi 0.6.x to Genshi 0.7.x
-+-------------------------------------------
-
--The Genshi development version now supports both Python 2 and Python 3.
-+Genshi 0.7.x now supports both Python 2 and Python 3.
-
- The most noticable API change in the Genshi development version is that the
- default encoding in numerous places is now None (i.e. unicode) instead
-diff --git a/genshi/compat.py b/genshi/compat.py
-index 9787325..6574e39 100644
---- a/genshi/compat.py
-+++ b/genshi/compat.py
-@@ -35,6 +35,15 @@ else:
- 'Python 2 compatibility function. Not usable in Python 3.')
-
-
-+# We need to test if an object is an instance of a string type in places
-+
-+if IS_PYTHON2:
-+ def isstring(obj):
-+ return isinstance(obj, basestring)
-+else:
-+ def isstring(obj):
-+ return isinstance(obj, str)
-+
- # We need to differentiate between StringIO and BytesIO in places
-
- if IS_PYTHON2:
-@@ -112,4 +121,3 @@ except NameError:
- if not x:
- return False
- return True
--
-diff --git a/genshi/filters/tests/test_html.py b/genshi/filters/tests/test_html.py
-index a8cfa04..7120988 100644
---- a/genshi/filters/tests/test_html.py
-+++ b/genshi/filters/tests/test_html.py
-@@ -368,12 +368,16 @@ def StyleSanitizer():
-
- class HTMLSanitizerTestCase(unittest.TestCase):
-
-- def assert_parse_error_or_equal(self, expected, exploit):
-+ def assert_parse_error_or_equal(self, expected, exploit,
-+ allow_strip=False):
- try:
- html = HTML(exploit)
- except ParseError:
- return
-- self.assertEquals(expected, (html | HTMLSanitizer()).render())
-+ sanitized_html = (html | HTMLSanitizer()).render()
-+ if not sanitized_html and allow_strip:
-+ return
-+ self.assertEquals(expected, sanitized_html)
-
- def test_sanitize_unchanged(self):
- html = HTML(u'<a href="#">fo<br />o</a>')
-@@ -417,10 +421,12 @@ class HTMLSanitizerTestCase(unittest.TestCase):
- html = HTML(u'<SCRIPT SRC="http://example.com/"></SCRIPT>')
- self.assertEquals('', (html | HTMLSanitizer()).render())
- src = u'<SCR\0IPT>alert("foo")</SCR\0IPT>'
-- self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src)
-+ self.assert_parse_error_or_equal('&lt;SCR\x00IPT&gt;alert("foo")', src,
-+ allow_strip=True)
- src = u'<SCRIPT&XYZ SRC="http://example.com/"></SCRIPT>'
- self.assert_parse_error_or_equal('&lt;SCRIPT&amp;XYZ; '
-- 'SRC="http://example.com/"&gt;', src)
-+ 'SRC="http://example.com/"&gt;', src,
-+ allow_strip=True)
-
- def test_sanitize_remove_onclick_attr(self):
- html = HTML(u'<div onclick=\'alert("foo")\' />')
-diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
-index b24f728..e561846 100644
---- a/genshi/template/astutil.py
-+++ b/genshi/template/astutil.py
-@@ -21,7 +21,7 @@ else:
- def parse(source, mode):
- return compile(source, '', mode, _ast.PyCF_ONLY_AST)
-
--from genshi.compat import IS_PYTHON2
-+from genshi.compat import IS_PYTHON2, isstring
-
- __docformat__ = 'restructuredtext en'
-
-@@ -103,32 +103,48 @@ class ASTCodeGenerator(object):
- self._new_line()
- return self.visit(node.body)
-
-+ # Python < 3.4
- # arguments = (expr* args, identifier? vararg,
- # identifier? kwarg, expr* defaults)
-+ #
-+ # Python >= 3.4
-+ # arguments = (arg* args, arg? vararg, arg* kwonlyargs, expr* kw_defaults,
-+ # arg? kwarg, expr* defaults)
- def visit_arguments(self, node):
-- first = True
-- no_default_count = len(node.args) - len(node.defaults)
-- for i, arg in enumerate(node.args):
-- if not first:
-- self._write(', ')
-+ def write_possible_comma():
-+ if _first[0]:
-+ _first[0] = False
- else:
-- first = False
-- self.visit(arg)
-- if i >= no_default_count:
-- self._write('=')
-- self.visit(node.defaults[i - no_default_count])
-- if getattr(node, 'vararg', None):
-- if not first:
- self._write(', ')
-+ _first = [True]
-+
-+ def write_args(args, defaults):
-+ no_default_count = len(args) - len(defaults)
-+ for i, arg in enumerate(args):
-+ write_possible_comma()
-+ self.visit(arg)
-+ default_idx = i - no_default_count
-+ if default_idx >= 0 and defaults[default_idx] is not None:
-+ self._write('=')
-+ self.visit(defaults[i - no_default_count])
-+
-+ write_args(node.args, node.defaults)
-+ if getattr(node, 'vararg', None):
-+ write_possible_comma()
-+ self._write('*')
-+ if isstring(node.vararg):
-+ self._write(node.vararg)
- else:
-- first = False
-- self._write('*' + node.vararg)
-+ self.visit(node.vararg)
-+ if getattr(node, 'kwonlyargs', None):
-+ write_args(node.kwonlyargs, node.kw_defaults)
- if getattr(node, 'kwarg', None):
-- if not first:
-- self._write(', ')
-+ write_possible_comma()
-+ self._write('**')
-+ if isstring(node.kwarg):
-+ self._write(node.kwarg)
- else:
-- first = False
-- self._write('**' + node.kwarg)
-+ self.visit(node.kwarg)
-
- if not IS_PYTHON2:
- # In Python 3 arguments get a special node
-@@ -732,6 +748,17 @@ class ASTCodeGenerator(object):
- def visit_Name(self, node):
- self._write(node.id)
-
-+ # NameConstant(singleton value)
-+ def visit_NameConstant(self, node):
-+ if node.value is None:
-+ self._write('None')
-+ elif node.value is True:
-+ self._write('True')
-+ elif node.value is False:
-+ self._write('False')
-+ else:
-+ raise Exception("Unknown NameConstant %r" % (node.value,))
-+
- # List(expr* elts, expr_context ctx)
- def visit_List(self, node):
- self._write('[')
-@@ -837,6 +864,7 @@ class ASTTransformer(object):
- visit_Attribute = _clone
- visit_Subscript = _clone
- visit_Name = _clone
-+ visit_NameConstant = _clone
- visit_List = _clone
- visit_Tuple = _clone
-
-diff --git a/genshi/template/eval.py b/genshi/template/eval.py
-index c00cfcb..81644a7 100644
---- a/genshi/template/eval.py
-+++ b/genshi/template/eval.py
-@@ -24,7 +24,8 @@ from genshi.template.astutil import ASTTransformer, ASTCodeGenerator, \
- from genshi.template.base import TemplateRuntimeError
- from genshi.util import flatten
-
--from genshi.compat import get_code_params, build_code_chunk, IS_PYTHON2
-+from genshi.compat import get_code_params, build_code_chunk, isstring, \
-+ IS_PYTHON2
-
- __all__ = ['Code', 'Expression', 'Suite', 'LenientLookup', 'StrictLookup',
- 'Undefined', 'UndefinedError']
-@@ -495,28 +496,34 @@ class TemplateASTTransformer(ASTTransformer):
- def __init__(self):
- self.locals = [CONSTANTS]
-
-+ def _process(self, names, node):
-+ if not IS_PYTHON2 and isinstance(node, _ast.arg):
-+ names.add(node.arg)
-+ elif isstring(node):
-+ names.add(node)
-+ elif isinstance(node, _ast.Name):
-+ names.add(node.id)
-+ elif isinstance(node, _ast.alias):
-+ names.add(node.asname or node.name)
-+ elif isinstance(node, _ast.Tuple):
-+ for elt in node.elts:
-+ self._process(names, elt)
-+
- def _extract_names(self, node):
- names = set()
-- def _process(node):
-- if not IS_PYTHON2 and isinstance(node, _ast.arg):
-- names.add(node.arg)
-- if isinstance(node, _ast.Name):
-- names.add(node.id)
-- elif isinstance(node, _ast.alias):
-- names.add(node.asname or node.name)
-- elif isinstance(node, _ast.Tuple):
-- for elt in node.elts:
-- _process(elt)
- if hasattr(node, 'args'):
- for arg in node.args:
-- _process(arg)
-+ self._process(names, arg)
-+ if hasattr(node, 'kwonlyargs'):
-+ for arg in node.kwonlyargs:
-+ self._process(names, arg)
- if hasattr(node, 'vararg'):
-- names.add(node.vararg)
-+ self._process(names, node.vararg)
- if hasattr(node, 'kwarg'):
-- names.add(node.kwarg)
-+ self._process(names, node.kwarg)
- elif hasattr(node, 'names'):
- for elt in node.names:
-- _process(elt)
-+ self._process(names, elt)
- return names
-
- def visit_Str(self, node):
-diff --git a/genshi/template/tests/eval.py b/genshi/template/tests/eval.py
-index 7722571..c44a0e3 100644
---- a/genshi/template/tests/eval.py
-+++ b/genshi/template/tests/eval.py
-@@ -590,6 +590,29 @@ x = smash(foo='abc', bar='def')
- suite.execute(data)
- self.assertEqual(['bardef', 'fooabc'], sorted(data['x']))
-
-+ if not IS_PYTHON2:
-+ def test_def_kwonlyarg(self):
-+ suite = Suite("""
-+def kwonly(*args, k):
-+ return k
-+x = kwonly(k="foo")
-+""")
-+ data = {}
-+ suite.execute(data)
-+ self.assertEqual("foo", data['x'])
-+
-+ def test_def_kwonlyarg_with_default(self):
-+ suite = Suite("""
-+def kwonly(*args, k="bar"):
-+ return k
-+x = kwonly(k="foo")
-+y = kwonly()
-+""")
-+ data = {}
-+ suite.execute(data)
-+ self.assertEqual("foo", data['x'])
-+ self.assertEqual("bar", data['y'])
-+
- def test_def_nested(self):
- suite = Suite("""
- def doit():
-diff --git a/run_benchmarks.sh b/run_benchmarks.sh
-new file mode 100644
-index 0000000..0c64cc8
---- /dev/null
-+++ b/run_benchmarks.sh
-@@ -0,0 +1,31 @@
-+#!/bin/sh
-+#
-+# 1. Run the tests with `tox` (this will set up all the tox envs).
-+# 2. ./run_benchmarks.sh <env-name> | tee results-<env-name>.out
-+
-+NAME="$1"
-+PYTHON="./.tox/$NAME/bin/python"
-+BENCH_DIR="bench_build/$1"
-+BENCH_BIN_DIR="$BENCH_DIR/bin"
-+mkdir -p "bench_build"
-+
-+rm -rf "$BENCH_DIR"
-+cp -R "examples/bench" "$BENCH_DIR"
-+
-+case "$NAME" in
-+ py32|py33)
-+ 2to3 -w --no-diffs "$BENCH_DIR"
-+ ;;
-+esac
-+
-+echo "-- basic --"
-+"$PYTHON" "$BENCH_DIR/basic.py"
-+echo
-+
-+echo "-- bigtable --"
-+"$PYTHON" "$BENCH_DIR/bigtable.py"
-+echo
-+
-+echo "-- xpath --"
-+"$PYTHON" "$BENCH_DIR/xpath.py"
-+echo
-diff --git a/setup.py b/setup.py
-index 294ba9b..45099b5 100755
---- a/setup.py
-+++ b/setup.py
-@@ -65,9 +65,13 @@ available.""")
-
-
- if Feature:
-+ # Optional C extension module for speeding up Genshi:
-+ # Not activated by default on:
-+ # - PyPy (where it harms performance)
-+ # - CPython >= 3.3 (the new Unicode C API is not supported yet)
- speedups = Feature(
- "optional C speed-enhancements",
-- standard = not is_pypy,
-+ standard = not is_pypy and sys.version_info < (3, 3),
- ext_modules = [
- Extension('genshi._speedups', ['genshi/_speedups.c']),
- ],
diff --git a/dev-python/genshi/files/genshi-0.7-issue602.patch b/dev-python/genshi/files/genshi-0.7-issue602.patch
deleted file mode 100644
index d7f0b77fa921..000000000000
--- a/dev-python/genshi/files/genshi-0.7-issue602.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 1acbd00b4961164edc8a185458ba4a433bedbceb Mon Sep 17 00:00:00 2001
-From: SVN-Git Migration <python-modules-team@lists.alioth.debian.org>
-Date: Thu, 8 Oct 2015 09:13:46 -0700
-Subject: Fix Python 3.5 compatibility issues.
-
-Origin: http://genshi.edgewall.org/attachment/ticket/602/t602.diff
-Bug: http://genshi.edgewall.org/ticket/602
-Forwarded: not-needed
-
-Patch-Name: issue602.patch
----
- genshi/filters/i18n.py | 6 ++++--
- genshi/template/astutil.py | 14 +++++++++++---
- genshi/template/directives.py | 20 ++++++++++++++------
- genshi/template/eval.py | 5 +++++
- 4 files changed, 34 insertions(+), 11 deletions(-)
-
-diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py
-index b724956..dfb52b8 100644
---- a/genshi/filters/i18n.py
-+++ b/genshi/filters/i18n.py
-@@ -1187,8 +1187,10 @@ def extract_from_code(code, gettext_functions):
- elif arg:
- strings.append(None)
- [_add(arg) for arg in node.args]
-- _add(node.starargs)
-- _add(node.kwargs)
-+ if hasattr(node, 'starargs'):
-+ _add(node.starargs)
-+ if hasattr(node, 'kwargs'):
-+ _add(node.kwargs)
- if len(strings) == 1:
- strings = strings[0]
- else:
-diff --git a/genshi/template/astutil.py b/genshi/template/astutil.py
-index a4c21c8..b24f728 100644
---- a/genshi/template/astutil.py
-+++ b/genshi/template/astutil.py
-@@ -135,6 +135,10 @@ class ASTCodeGenerator(object):
- def visit_arg(self, node):
- self._write(node.arg)
-
-+ def visit_Starred(self, node):
-+ self._write('*')
-+ self.visit(node.value)
-+
- # FunctionDef(identifier name, arguments args,
- # stmt* body, expr* decorator_list)
- def visit_FunctionDef(self, node):
-@@ -648,9 +652,13 @@ class ASTCodeGenerator(object):
- if not first:
- self._write(', ')
- first = False
-- # keyword = (identifier arg, expr value)
-- self._write(keyword.arg)
-- self._write('=')
-+ if not keyword.arg:
-+ # Python 3.5+ star-star args
-+ self._write('**')
-+ else:
-+ # keyword = (identifier arg, expr value)
-+ self._write(keyword.arg)
-+ self._write('=')
- self.visit(keyword.value)
- if getattr(node, 'starargs', None):
- if not first:
-diff --git a/genshi/template/directives.py b/genshi/template/directives.py
-index 7301c2d..1f70ef6 100644
---- a/genshi/template/directives.py
-+++ b/genshi/template/directives.py
-@@ -266,13 +266,21 @@ class DefDirective(Directive):
- if isinstance(ast, _ast.Call):
- self.name = ast.func.id
- for arg in ast.args:
-- # only names
-- self.args.append(arg.id)
-+ if hasattr(_ast, 'Starred') and isinstance(arg, _ast.Starred):
-+ # Python 3.5+
-+ self.star_args = arg.value.id
-+ else:
-+ # only names
-+ self.args.append(arg.id)
- for kwd in ast.keywords:
-- self.args.append(kwd.arg)
-- exp = Expression(kwd.value, template.filepath,
-- lineno, lookup=template.lookup)
-- self.defaults[kwd.arg] = exp
-+ if kwd.arg is None:
-+ # Python 3.5+
-+ self.dstar_args = kwd.value.id
-+ else:
-+ self.args.append(kwd.arg)
-+ exp = Expression(kwd.value, template.filepath,
-+ lineno, lookup=template.lookup)
-+ self.defaults[kwd.arg] = exp
- if getattr(ast, 'starargs', None):
- self.star_args = ast.starargs.id
- if getattr(ast, 'kwargs', None):
-diff --git a/genshi/template/eval.py b/genshi/template/eval.py
-index 89aec49..c00cfcb 100644
---- a/genshi/template/eval.py
-+++ b/genshi/template/eval.py
-@@ -593,6 +593,11 @@ class TemplateASTTransformer(ASTTransformer):
- finally:
- self.locals.pop()
-
-+ # Only used in Python 3.5+
-+ def visit_Starred(self, node):
-+ node.value = self.visit(node.value)
-+ return node
-+
- def visit_Name(self, node):
- # If the name refers to a local inside a lambda, list comprehension, or
- # generator expression, leave it alone
diff --git a/dev-python/genshi/genshi-0.7-r1.ebuild b/dev-python/genshi/genshi-0.7-r1.ebuild
deleted file mode 100644
index 1980216a9f33..000000000000
--- a/dev-python/genshi/genshi-0.7-r1.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-PYTHON_COMPAT=( python{2_7,3_{4,5,6}} pypy )
-
-inherit distutils-r1
-
-MY_P="Genshi-${PV}"
-
-DESCRIPTION="Python toolkit for stream-based generation of output for the web"
-HOMEPAGE="http://genshi.edgewall.org/ https://pypi.org/project/Genshi/"
-SRC_URI="http://ftp.edgewall.com/pub/genshi/${MY_P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
-IUSE="doc examples"
-
-DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${MY_P}"
-
-src_prepare() {
- epatch "${FILESDIR}/${P}-issue566.patch"
- epatch "${FILESDIR}/${P}-issue582.patch"
- epatch "${FILESDIR}/${P}-fix_tests_failure_with_python27.patch"
- epatch "${FILESDIR}/${P}-issue602.patch"
-}
-
-python_test() {
- esetup.py test
-}
-
-python_install_all() {
- if use doc; then
- dodoc doc/*.txt
- dohtml -r doc/*
- fi
- if use examples; then
- insinto /usr/share/doc/${PF}
- doins -r examples
- fi
- distutils-r1_python_install_all
-}
diff --git a/dev-python/genshi/genshi-0.7.ebuild b/dev-python/genshi/genshi-0.7.ebuild
deleted file mode 100644
index 2c8f3aaed63d..000000000000
--- a/dev-python/genshi/genshi-0.7.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-PYTHON_COMPAT=( python2_7 pypy )
-
-inherit distutils-r1
-
-MY_P="Genshi-${PV}"
-
-DESCRIPTION="Python toolkit for stream-based generation of output for the web"
-HOMEPAGE="http://genshi.edgewall.org/ https://pypi.org/project/Genshi/"
-SRC_URI="http://ftp.edgewall.com/pub/genshi/${MY_P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 ppc ~ppc64 ~sparc x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
-IUSE="doc examples"
-
-DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${MY_P}"
-
-python_test() {
- esetup.py test
-}
-
-python_install_all() {
- if use doc; then
- dodoc doc/*.txt
- dohtml -r doc/*
- fi
- if use examples; then
- insinto /usr/share/doc/${PF}
- doins -r examples
- fi
- distutils-r1_python_install_all
-}
diff --git a/dev-python/genshi/metadata.xml b/dev-python/genshi/metadata.xml
deleted file mode 100644
index e24dd86faa2a..000000000000
--- a/dev-python/genshi/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
- <maintainer type="project">
- <email>python@gentoo.org</email>
- <name>Python</name>
- </maintainer>
-</pkgmetadata>