diff --git a/packages/x11-misc/zim/files/Fix-reading-preformatted-text-under-Python-3.9.patch b/packages/x11-misc/zim/files/Fix-reading-preformatted-text-under-Python-3.9.patch new file mode 100644 index 00000000..f4b8bf5c --- /dev/null +++ b/packages/x11-misc/zim/files/Fix-reading-preformatted-text-under-Python-3.9.patch @@ -0,0 +1,27 @@ +Upstream: sent https://github.com/zim-desktop-wiki/zim-desktop-wiki/pull/1261 + +From 1e63570eb941b985dc70df31043c7f4279c6a935 Mon Sep 17 00:00:00 2001 +From: Alexander Kapshuna +Date: Fri, 18 Sep 2020 01:15:16 +0300 +Subject: [PATCH] Fix reading preformatted text under Python 3.9 + +--- + zim/formats/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/zim/formats/__init__.py b/zim/formats/__init__.py +index e1149f7f..f22b0b0b 100644 +--- a/zim/formats/__init__.py ++++ b/zim/formats/__init__.py +@@ -822,7 +822,7 @@ class ParseTreeBuilder(Builder): + self._last_char = None + + def append(self, tag, attrib=None, text=None): +- attrib = attrib.copy() if attrib is not None else None ++ attrib = attrib.copy() if attrib is not None else {} + if tag in BLOCK_LEVEL: + if text and not text.endswith('\n'): + text += '\n' +-- +2.28.0 + diff --git a/packages/x11-misc/zim/files/Replace-usage-of-getchildren-and-getiterator-with-li.patch b/packages/x11-misc/zim/files/Replace-usage-of-getchildren-and-getiterator-with-li.patch new file mode 100644 index 00000000..a7d0c167 --- /dev/null +++ b/packages/x11-misc/zim/files/Replace-usage-of-getchildren-and-getiterator-with-li.patch @@ -0,0 +1,239 @@ +Upstream: master + +From 0c7d355a76236b0c687fb7c59cd974c2c7f35657 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 10 Sep 2020 21:31:22 +0800 +Subject: [PATCH] Replace usage of `getchildren` and `getiterator` with `list` + or `iter` + +Methods getchildren() and getiterator() of classes ElementTree and Element in +the ElementTree module have been deprecated since Python 3.2 and removed since +Python 3.9. + +Fixes #1258 +Closes #1259 +--- + tests/__init__.py | 2 +- + zim/formats/__init__.py | 44 ++++++++++++++++++++--------------------- + zim/gui/pageview.py | 2 +- + 3 files changed, 24 insertions(+), 24 deletions(-) + +diff --git a/tests/__init__.py b/tests/__init__.py +index 20e5b8df..88f87f87 100644 +--- a/tests/__init__.py ++++ b/tests/__init__.py +@@ -559,7 +559,7 @@ class _TestData(object): + tree = etree.ElementTree(file=root + '/tests/data/notebook-wiki.xml') + + test_data = [] +- for node in tree.getiterator(tag='page'): ++ for node in tree.iter(tag='page'): + name = node.attrib['name'] + text = str(node.text.lstrip('\n')) + test_data.append((name, text)) +diff --git a/zim/formats/__init__.py b/zim/formats/__init__.py +index 9e00c169..e1149f7f 100644 +--- a/zim/formats/__init__.py ++++ b/zim/formats/__init__.py +@@ -262,7 +262,7 @@ class ParseTree(object): + '''Returns True if the tree contains any content at all.''' + root = self._etree.getroot() + return root is not None and ( +- bool(root.getchildren()) or (root.text and not root.text.isspace()) ++ bool(list(root)) or (root.text and not root.text.isspace()) + ) + + @property +@@ -284,14 +284,14 @@ class ParseTree(object): + myroot = self._etree.getroot() + otherroot = tree._etree.getroot() + if otherroot.text: +- children = myroot.getchildren() ++ children = list(myroot) + if children: + last = children[-1] + last.tail = (last.tail or '') + otherroot.text + else: + myroot.text = (myroot.text or '') + otherroot.text + +- for element in otherroot.getchildren(): ++ for element in iter(otherroot): + myroot.append(element) + + return self +@@ -312,7 +312,7 @@ class ParseTree(object): + + # HACK: Force sorting of attrib - else change in python3.8 breaks test cases + # Ensure all attrib are string, else ElementTree fails +- for element in self._etree.getiterator('*'): ++ for element in self._etree.iter('*'): + myattrib = element.attrib.copy() + element.attrib.clear() + for key in sorted(myattrib.keys()): +@@ -342,8 +342,8 @@ class ParseTree(object): + from zim.notebook.page import HRef # XXX + seen = set() + for elt in itertools.chain( +- self._etree.getiterator(LINK), +- self._etree.getiterator(IMAGE) ++ self._etree.iter(LINK), ++ self._etree.iter(IMAGE) + ): + href = elt.attrib.get('href') + if href and href not in seen: +@@ -359,7 +359,7 @@ class ParseTree(object): + @returns: yields an unordered list of tag names + ''' + seen = set() +- for elt in self._etree.getiterator(TAG): ++ for elt in self._etree.iter(TAG): + name = elt.text + if not name in seen: + seen.add(name) +@@ -367,7 +367,7 @@ class ParseTree(object): + + def _get_heading_element(self, level=1): + root = self._etree.getroot() +- children = root.getchildren() ++ children = list(root) + if root.text and not root.text.isspace(): + return None + +@@ -424,7 +424,7 @@ class ParseTree(object): + ''' + root = self._etree.getroot() + roottext = root.text and not root.text.isspace() +- children = root.getchildren() ++ children = list(root) + + if children and not roottext: + first = children[0] +@@ -442,7 +442,7 @@ class ParseTree(object): + and a max depth. + ''' + path = [] +- for heading in self._etree.getiterator('h'): ++ for heading in self._etree.iter('h'): + level = int(heading.attrib['level']) + # find parent header in path using old level + while path and path[-1][0] >= level: +@@ -461,11 +461,11 @@ class ParseTree(object): + adds a '_src_file' attribute to the elements with the full file path. + ''' + if notebook is None: +- for element in self._etree.getiterator('img'): ++ for element in self._etree.iter('img'): + filepath = element.attrib['src'] + element.attrib['_src_file'] = File(filepath) + else: +- for element in self._etree.getiterator('img'): ++ for element in self._etree.iter('img'): + filepath = element.attrib['src'] + element.attrib['_src_file'] = notebook.resolve_file(element.attrib['src'], path) + +@@ -473,7 +473,7 @@ class ParseTree(object): + '''Undo effect of L{resolve_images()}, mainly intended for + testing. + ''' +- for element in self._etree.getiterator('img'): ++ for element in self._etree.iter('img'): + if '_src_file' in element.attrib: + element.attrib.pop('_src_file') + +@@ -481,7 +481,7 @@ class ParseTree(object): + '''Calls encode_url() on all links that contain urls. + See zim.parsing for details. Modifies the parse tree. + ''' +- for link in self._etree.getiterator('link'): ++ for link in self._etree.iter('link'): + href = link.attrib['href'] + if href and is_url_re.match(href): + link.attrib['href'] = url_encode(href, mode=mode) +@@ -492,7 +492,7 @@ class ParseTree(object): + '''Calls decode_url() on all links that contain urls. + See zim.parsing for details. Modifies the parse tree. + ''' +- for link in self._etree.getiterator('link'): ++ for link in self._etree.iter('link'): + href = link.attrib['href'] + if href and is_url_re.match(href): + link.attrib['href'] = url_decode(href, mode=mode) +@@ -502,7 +502,7 @@ class ParseTree(object): + def count(self, text): + '''Returns the number of occurences of 'text' in this tree.''' + count = 0 +- for element in self._etree.getiterator(): ++ for element in self._etree.iter(): + if element.text: + count += element.text.count(text) + if element.tail: +@@ -515,7 +515,7 @@ class ParseTree(object): + in this tree. + ''' + count = 0 +- for element in self._etree.getiterator(): ++ for element in self._etree.iter(): + if element.text: + newstring, n = regex.subn('', element.text) + count += n +@@ -535,7 +535,7 @@ class ParseTree(object): + elif element.tag in ('li', 'h'): + return True # implicit newline + else: +- children = element.getchildren() ++ children = list(element) + if children: + return self._get_element_ends_with_newline(children[-1]) # recurs + elif element.text: +@@ -586,7 +586,7 @@ class ParseTree(object): + @param tag: tag name + @returns: yields L{Node} objects + ''' +- for elt in self._etree.getiterator(tag): ++ for elt in self._etree.iter(tag): + yield Element.new_from_etree(elt) + + def replace(self, tag, func): +@@ -932,7 +932,7 @@ class OldParseTreeBuilder(object): + if len(self._stack) > 1 and not ( + tag in (IMAGE, OBJECT, HEADDATA, TABLEDATA) + or (self._last.text and not self._last.text.isspace()) +- or self._last.getchildren() ++ or bool(list(self._last)) + ): + # purge empty tags + if self._last.text and self._last.text.isspace(): +@@ -940,7 +940,7 @@ class OldParseTreeBuilder(object): + + empty = self._stack.pop() + self._stack[-1].remove(empty) +- children = self._stack[-1].getchildren() ++ children = list(self._stack[-1]) + if children: + self._last = children[-1] + if not self._last.tail is None: +@@ -1053,7 +1053,7 @@ class OldParseTreeBuilder(object): + def _append_to_previous(self, text): + '''Add text before current element''' + parent = self._stack[-2] +- children = parent.getchildren()[:-1] ++ children = list(parent)[:-1] + if children: + if children[-1].tail: + children[-1].tail = children[-1].tail + text +diff --git a/zim/gui/pageview.py b/zim/gui/pageview.py +index 84fe99b4..c2c29cc5 100644 +--- a/zim/gui/pageview.py ++++ b/zim/gui/pageview.py +@@ -857,7 +857,7 @@ class TextBuffer(Gtk.TextBuffer): + if not iter.starts_line(): + self.insert_at_cursor('\n') + +- for element in node.getchildren(): ++ for element in iter(node): + if element.tag in ('p', 'div'): + # No force line start here on purpose + if 'indent' in element.attrib: +-- +2.28.0 + diff --git a/packages/x11-misc/zim/zim-0.72.0.exheres-0 b/packages/x11-misc/zim/zim-0.73.2.exheres-0 similarity index 65% rename from packages/x11-misc/zim/zim-0.72.0.exheres-0 rename to packages/x11-misc/zim/zim-0.73.2.exheres-0 index b7b4a8bc..c27b2398 100644 --- a/packages/x11-misc/zim/zim-0.72.0.exheres-0 +++ b/packages/x11-misc/zim/zim-0.73.2.exheres-0 @@ -25,14 +25,14 @@ DEPENDENCIES=" recommendation: dev-python/pyxdg[python_abis:*(-)?] suggestion: - app-text/dvipng - app-text/texlive-core + app-text/dvipng [[ note = [ equation plugin ] ]] + app-text/texlive-core [[ note = [ equation plugin ] ]] dev-libs/zeitgeist:2.0 - dev-scm/bzr - media-gfx/ImageMagick - media-gfx/graphviz - media-gfx/scrot - media-sound/lilypond + dev-scm/bzr [[ note = [ version control plugin ] ]] + media-gfx/graphviz [[ note = [ diagram editor plugin ] ]] + media-gfx/ImageMagick [[ note = [ screenshot plugin ] ]] + media-gfx/scrot [[ note = [ screenshot plugin ] ]] + media-sound/lilypond [[ note = [ music score plugin ] ]] sci-apps/gnuplot " @@ -41,6 +41,11 @@ RESTRICT="test" WORK=${WORKBASE}/${PNV/_rc/-rc} +DEFAULT_SRC_PREPARE_PATCHES=( + "${FILES}"/Fix-reading-preformatted-text-under-Python-3.9.patch + "${FILES}"/Replace-usage-of-getchildren-and-getiterator-with-li.patch +) + pkg_setup() { unset DISPLAY # tries to access X socket }