[gentoo-commits] proj/portage:master commit in: lib/portage/xml/
commit: 0ffb754d244871b21f0ccb52087fc7aca64bea85 Author: Brian Dolbec gentoo org> AuthorDate: Wed Jul 20 03:19:44 2022 + Commit: Brian Dolbec gentoo org> CommitDate: Wed Jul 20 03:19:44 2022 + URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=0ffb754d xml/metadata.py: Fix intermittent duplicate use descriptions in equery uses Fix commit b67c57cc2e0a17b8e6454dc316c59e8736582894 which incorrectly used node.iter() which is sometimes returning duplicate descriptions. Bug: https://bugs.gentoo.org/858791 Signed-off-by: Brian Dolbec gentoo.org> lib/portage/xml/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 672f64358..8eaa37a3f 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -106,7 +106,7 @@ class _Useflag: _desc = "" if node.text: _desc = node.text -for child in node.iter(): +for child in node: _desc += child.text if child.text else "" _desc += child.tail if child.tail else "" # This takes care of tabs and newlines left from the file
[gentoo-commits] proj/portage:master commit in: lib/portage/xml/
commit: b67c57cc2e0a17b8e6454dc316c59e8736582894 Author: Brian Dolbec gentoo org> AuthorDate: Mon Jul 11 01:49:01 2022 + Commit: Brian Dolbec gentoo org> CommitDate: Mon Jul 11 03:59:02 2022 + URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=b67c57cc xml.metadata.py: Fix gentoolkit traceback in _Useflag class brian@storm ~/Dev/git/gentoolkit $ equery u smartmontools Traceback (most recent call last): File "/home/brian/Dev/git/gentoolkit/bin/equery", line 44, in equery.main(sys.argv) File "/home/brian/Dev/git/gentoolkit/pym/gentoolkit/equery/__init__.py", line 359, in main loaded_module.main(module_args) File "/home/brian/Dev/git/gentoolkit/pym/gentoolkit/equery/uses.py", line 341, in main output = get_output_descriptions(pkg, global_usedesc) File "/home/brian/Dev/git/gentoolkit/pym/gentoolkit/equery/uses.py", line 201, in get_output_descriptions local_usedesc = pkg.metadata.use() File "/usr/lib/python3.10/site-packages/portage/xml/metadata.py", line 337, in use self._useflags = tuple(_Useflag(node) for node in iterate("flag")) File "/usr/lib/python3.10/site-packages/portage/xml/metadata.py", line 337, in self._useflags = tuple(_Useflag(node) for node in iterate("flag")) File "/usr/lib/python3.10/site-packages/portage/xml/metadata.py", line 109, in __init__ for child in node.getchildren(): AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getchildren' Reported by: IRC user kurly gentoolkit code class used node.iter() Found another commmit where getchidren was deprecated and replaced. Bug:https://bugs.gentoo.org/857537 Signed-off-by: Brian Dolbec gentoo.org> lib/portage/xml/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 807847d7e..672f64358 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -106,7 +106,7 @@ class _Useflag: _desc = "" if node.text: _desc = node.text -for child in node.getchildren(): +for child in node.iter(): _desc += child.text if child.text else "" _desc += child.tail if child.tail else "" # This takes care of tabs and newlines left from the file
[gentoo-commits] proj/portage:master commit in: lib/portage/xml/
commit: 7d891b78ec906bbd73a43d83abd296350678f002 Author: Zac Medico gentoo org> AuthorDate: Thu Aug 13 03:28:28 2020 + Commit: Zac Medico gentoo org> CommitDate: Thu Aug 13 03:39:26 2020 + URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=7d891b78 lib/portage/xml/metadata.py: tolerate xml.parsers.expat import failures (bug 736912) Tolerate broken or missing xml support in python. This reverts a behavior change from commit 935c47d972d986f1822850618442c19c97e300c3. Fixes: 935c47d972d9 ("lib/portage/xml/metadata.py: fix ungrouped-imports w/refactor") Bug: https://bugs.gentoo.org/736912 Signed-off-by: Zac Medico gentoo.org> lib/portage/xml/metadata.py | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 808ba2246..875cc4044 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -34,7 +34,10 @@ __all__ = ('MetaDataXML', 'parse_metadata_use') import re import xml.etree.ElementTree as etree -from xml.parsers.expat import ExpatError +try: + from xml.parsers.expat import ExpatError +except Exception: + ExpatError = SyntaxError from portage import _encodings, _unicode_encode from portage.util import cmp_sort_key, unique_everseen
[gentoo-commits] proj/portage:master commit in: lib/portage/xml/
commit: 935c47d972d986f1822850618442c19c97e300c3 Author: Aaron Bauman gentoo org> AuthorDate: Thu Aug 6 23:28:13 2020 + Commit: Zac Medico gentoo org> CommitDate: Fri Aug 7 02:53:11 2020 + URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=935c47d9 lib/portage/xml/metadata.py: fix ungrouped-imports w/refactor * This drops the import for cElementTree as it is deprecated. See: https://docs.python.org/3/library/xml.etree.elementtree.html * Drop the error checking as these modules are a part of stdlib. * Additionally, the pyexpat issue was fixed in 3.2. See: https://bugs.python.org/issue14988 Signed-off-by: Aaron Bauman gentoo.org> Signed-off-by: Zac Medico gentoo.org> lib/portage/xml/metadata.py | 29 - 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 646edb5b9..808ba2246 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -31,29 +31,16 @@ __all__ = ('MetaDataXML', 'parse_metadata_use') -try: - import xml.etree.cElementTree as etree -except (SystemExit, KeyboardInterrupt): - raise -except (ImportError, SystemError, RuntimeError, Exception): - # broken or missing xml support - # https://bugs.python.org/issue14988 - import xml.etree.ElementTree as etree - -try: - from xml.parsers.expat import ExpatError -except (SystemExit, KeyboardInterrupt): - raise -except (ImportError, SystemError, RuntimeError, Exception): - ExpatError = SyntaxError - import re -import xml.etree.ElementTree +import xml.etree.ElementTree as etree + +from xml.parsers.expat import ExpatError + from portage import _encodings, _unicode_encode from portage.util import cmp_sort_key, unique_everseen -class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder): +class _MetadataTreeBuilder(etree.TreeBuilder): """ Implements doctype() as required to avoid deprecation warnings with Python >=2.7. @@ -198,8 +185,8 @@ class MetaDataXML: try: self._xml_tree = etree.parse(_unicode_encode(metadata_xml_path, - encoding=_encodings['fs'], errors='strict'), - parser=etree.XMLParser(target=_MetadataTreeBuilder())) + encoding = _encodings['fs'], errors='strict'), + parser = etree.XMLParser(target=_MetadataTreeBuilder())) except ImportError: pass except ExpatError as e: @@ -238,7 +225,7 @@ class MetaDataXML: try: self._herdstree = etree.parse(_unicode_encode(self._herds_path, encoding=_encodings['fs'], errors='strict'), - parser=etree.XMLParser(target=_MetadataTreeBuilder())) + parser = etree.XMLParser(target=_MetadataTreeBuilder())) except (ImportError, IOError, SyntaxError): return None
[gentoo-commits] proj/portage:master commit in: lib/portage/xml/
commit: da259e7cadb4726c283b1961a503509d1fa6751e Author: Zac Medico gentoo org> AuthorDate: Tue May 28 02:14:28 2019 + Commit: Zac Medico gentoo org> CommitDate: Tue May 28 02:35:37 2019 + URL:https://gitweb.gentoo.org/proj/portage.git/commit/?id=da259e7c metadata.xml: filter empty elements (bug 686886) Bug: https://bugs.gentoo.org/686886 Signed-off-by: Zac Medico gentoo.org> lib/portage/xml/metadata.py | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/portage/xml/metadata.py b/lib/portage/xml/metadata.py index 24888bb47..e479f2dd2 100644 --- a/lib/portage/xml/metadata.py +++ b/lib/portage/xml/metadata.py @@ -172,16 +172,16 @@ class _Upstream(object): def upstream_bugtrackers(self): """Retrieve upstream bugtracker location from xml node.""" - return [e.text for e in self.node.findall('bugs-to')] + return [e.text for e in self.node.findall('bugs-to') if e.text] def upstream_changelogs(self): """Retrieve upstream changelog location from xml node.""" - return [e.text for e in self.node.findall('changelog')] + return [e.text for e in self.node.findall('changelog') if e.text] def upstream_documentation(self): """Retrieve upstream documentation location from xml node.""" result = [] - for elem in self.node.findall('doc'): + for elem in (e for e in self.node.findall('doc') if e.text): lang = elem.get('lang') result.append((elem.text, lang)) return result @@ -192,7 +192,7 @@ class _Upstream(object): def upstream_remoteids(self): """Retrieve upstream remote ID from xml node.""" - return [(e.text, e.get('type')) for e in self.node.findall('remote-id')] + return [(e.text, e.get('type')) for e in self.node.findall('remote-id') if e.text] class MetaDataXML(object): @@ -311,7 +311,7 @@ class MetaDataXML(object): self._descriptions = tuple() else: self._descriptions = tuple(e.text \ - for e in self._xml_tree.findall("longdescription")) + for e in self._xml_tree.findall("longdescription") if e.text) return self._descriptions