[gentoo-commits] proj/portage:master commit in: lib/portage/xml/

2022-07-19 Thread Brian Dolbec
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/

2022-07-10 Thread Brian Dolbec
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/

2020-08-12 Thread Zac Medico
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/

2020-08-06 Thread Zac Medico
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/

2019-05-27 Thread Zac Medico
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