* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-08-25 1:03 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2011-08-25 1:03 UTC (permalink / raw
To: gentoo-commits
commit: f4d5667a09cb308f30bb7eb5ee14b9ef061c3604
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 25 01:02:40 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Aug 25 01:02:40 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=f4d5667a
ElementTree: use iter if available (bug #380565)
---
pym/portage/xml/metadata.py | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 7acc1f3..090d2c0 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -217,7 +217,12 @@ class MetaDataXML(object):
if herd in ('no-herd', 'maintainer-wanted', 'maintainer-needed'):
return None
- for node in self._herdstree.getiterator('herd'):
+ try:
+ iterate = self._herdstree.iter
+ except AttributeError:
+ iterate = self._herdstree.getiterator
+
+ for node in iterate('herd'):
if node.findtext('name') == herd:
return node.findtext('email')
@@ -292,8 +297,12 @@ class MetaDataXML(object):
if self._xml_tree is None:
self._useflags = tuple()
else:
+ try:
+ iterate = self._xml_tree.iter
+ except AttributeError:
+ iterate = self._xml_tree.getiterator
self._useflags = tuple(_Useflag(node) \
- for node in self._xml_tree.getiterator('flag'))
+ for node in iterate('flag'))
return self._useflags
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-09-01 2:40 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2011-09-01 2:40 UTC (permalink / raw
To: gentoo-commits
commit: 6b8855016820fb84bac25720d99bf8e42c9e9469
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 1 02:39:12 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Sep 1 02:39:12 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6b885501
Fix deprecated Element.getchildren() call.
---
pym/portage/xml/metadata.py | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index ade2cff..ef335e2 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -63,8 +63,7 @@ class _Maintainer(object):
self.description = None
self.restrict = node.get('restrict')
self.status = node.get('status')
- maint_attrs = node.getchildren()
- for attr in maint_attrs:
+ for attr in node:
setattr(self, attr.tag, attr.text)
def __repr__(self):
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-09-01 2:56 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2011-09-01 2:56 UTC (permalink / raw
To: gentoo-commits
commit: 1df7fc5c8c1295aec7bf3c91863432ebac0caae5
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 1 02:52:58 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Sep 1 02:55:45 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=1df7fc5c
xml/metadata: implement XMLParser.doctype()
Avoid deprecation warnings again, like in commit
63035acd702ab0cdaac31e33676b5a20a91eae47.
---
pym/portage/xml/metadata.py | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index ef335e2..9e18869 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -36,10 +36,19 @@ except ImportError:
import xml.etree.ElementTree as etree
import re
+import xml.etree.ElementTree
import portage
from portage import os
from portage.util import unique_everseen
+class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder):
+ """
+ Implements doctype() as required to avoid deprecation warnings with
+ Python >=2.7.
+ """
+ def doctype(self, name, pubid, system):
+ pass
+
class _Maintainer(object):
"""An object for representing one maintainer.
@@ -173,7 +182,8 @@ class MetaDataXML(object):
self._xml_tree = None
try:
- self._xml_tree = etree.parse(metadata_xml_path)
+ self._xml_tree = etree.parse(metadata_xml_path,
+ parser=etree.XMLParser(target=_MetadataTreeBuilder()))
except ImportError:
pass
@@ -208,7 +218,8 @@ class MetaDataXML(object):
if self._herdstree is None:
try:
- self._herdstree = etree.parse(self._herds_path)
+ self._herdstree = etree.parse(self._herds_path,
+ parser=etree.XMLParser(target=_MetadataTreeBuilder()))
except (ImportError, IOError, SyntaxError):
return None
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-09-02 15:45 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2011-09-02 15:45 UTC (permalink / raw
To: gentoo-commits
commit: cfe7af2b1da9357d5bfaa531f288ef0ac074184c
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Fri Sep 2 15:45:43 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri Sep 2 15:45:43 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=cfe7af2b
xml/metadata: handle py 2.6 cElementTree incompat
---
pym/portage/xml/metadata.py | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 9e18869..3513fff 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -30,10 +30,19 @@
__all__ = ('MetaDataXML',)
-try:
- import xml.etree.cElementTree as etree
-except ImportError:
+import sys
+
+if sys.hexversion < 0x2070000:
+ # Our _MetadataTreeBuilder usage is incompatible with
+ # cElementTree in Python 2.6:
+ # File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 644, in findall
+ # assert self._root is not None
import xml.etree.ElementTree as etree
+else:
+ try:
+ import xml.etree.cElementTree as etree
+ except ImportError:
+ import xml.etree.ElementTree as etree
import re
import xml.etree.ElementTree
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-09-02 17:29 Arfrever Frehtes Taifersar Arahesis
0 siblings, 0 replies; 11+ messages in thread
From: Arfrever Frehtes Taifersar Arahesis @ 2011-09-02 17:29 UTC (permalink / raw
To: gentoo-commits
commit: 7455c3845f0d0960af2194fdc4917c556fe7b04c
Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Gentoo <DOT> Org>
AuthorDate: Fri Sep 2 17:28:24 2011 +0000
Commit: Arfrever Frehtes Taifersar Arahesis <arfrever <AT> gentoo <DOT> org>
CommitDate: Fri Sep 2 17:28:24 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=7455c384
Fix indentation.
---
pym/portage/xml/metadata.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 3513fff..f4b8f2d 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -36,7 +36,7 @@ if sys.hexversion < 0x2070000:
# Our _MetadataTreeBuilder usage is incompatible with
# cElementTree in Python 2.6:
# File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 644, in findall
- # assert self._root is not None
+ # assert self._root is not None
import xml.etree.ElementTree as etree
else:
try:
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2011-09-03 17:09 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2011-09-03 17:09 UTC (permalink / raw
To: gentoo-commits
commit: fea331226ed0d760ab2d0e86650d62dd32230cd6
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 3 17:09:01 2011 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Sep 3 17:09:01 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=fea33122
xml/metadata: handle py 3.1 cElementTree incompat
This will fix bug #381657.
---
pym/portage/xml/metadata.py | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index f4b8f2d..04112cd 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -32,9 +32,10 @@ __all__ = ('MetaDataXML',)
import sys
-if sys.hexversion < 0x2070000:
+if sys.hexversion < 0x2070000 or \
+ (sys.hexversion < 0x3020000 and sys.hexversion >= 0x3000000):
# Our _MetadataTreeBuilder usage is incompatible with
- # cElementTree in Python 2.6:
+ # cElementTree in Python 2.6, 3.0, and 3.1:
# File "/usr/lib/python2.6/xml/etree/ElementTree.py", line 644, in findall
# assert self._root is not None
import xml.etree.ElementTree as etree
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2012-01-17 21:13 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-01-17 21:13 UTC (permalink / raw
To: gentoo-commits
commit: 53dac055613c8627f5c79d9cc6ebb0596c2c7b2c
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 17 21:13:00 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Jan 17 21:13:00 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=53dac055
xml/metadata.py: handle ExpatError
---
pym/portage/xml/metadata.py | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 04112cd..5d02a35 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -45,10 +45,15 @@ else:
except ImportError:
import xml.etree.ElementTree as etree
+try:
+ from xml.parsers.expat import ExpatError
+except ImportError:
+ ExpatError = SyntaxError
+
import re
import xml.etree.ElementTree
import portage
-from portage import os
+from portage import os, _unicode_decode
from portage.util import unique_everseen
class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder):
@@ -179,7 +184,7 @@ class MetaDataXML(object):
"""Access metadata.xml"""
def __init__(self, metadata_xml_path, herds):
- """Parse a valid metadata.xml file.
+ """Parse a valid mnicoetadata.xml file.
@type metadata_xml_path: str
@param metadata_xml_path: path to a valid metadata.xml file
@@ -196,6 +201,8 @@ class MetaDataXML(object):
parser=etree.XMLParser(target=_MetadataTreeBuilder()))
except ImportError:
pass
+ except ExpatError as e:
+ raise SyntaxError(_unicode_decode("%s") % (e,))
if isinstance(herds, etree.ElementTree):
herds_etree = herds
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2012-01-17 21:40 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-01-17 21:40 UTC (permalink / raw
To: gentoo-commits
commit: 2dfb8f9290ad3468d3b7e5f7b249a720cc0bc90a
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 17 21:40:28 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Jan 17 21:40:28 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=2dfb8f92
fix comment garbage from last commit
---
pym/portage/xml/metadata.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 5d02a35..bed6a1e 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -184,7 +184,7 @@ class MetaDataXML(object):
"""Access metadata.xml"""
def __init__(self, metadata_xml_path, herds):
- """Parse a valid mnicoetadata.xml file.
+ """Parse a valid metadata.xml file.
@type metadata_xml_path: str
@param metadata_xml_path: path to a valid metadata.xml file
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2012-09-12 4:46 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-09-12 4:46 UTC (permalink / raw
To: gentoo-commits
commit: 6d1ed6df57e6167fee9c6fc30fa889f27042043e
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 12 04:46:43 2012 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Sep 12 04:46:43 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6d1ed6df
MetaDataXML: encode unicode file paths safely
This will fix cases similar to the one fixed in commit
f01d7a8ca158ec60df76a3e8ae5b80ac3f62429e for bug #310789.
---
pym/portage/xml/metadata.py | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index f820e54..113b118 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -58,8 +58,7 @@ except (ImportError, SystemError, RuntimeError, Exception):
import re
import xml.etree.ElementTree
-import portage
-from portage import os, _unicode_decode
+from portage import _encodings, _unicode_encode, _unicode_decode
from portage.util import unique_everseen
class _MetadataTreeBuilder(xml.etree.ElementTree.TreeBuilder):
@@ -203,7 +202,8 @@ class MetaDataXML(object):
self._xml_tree = None
try:
- self._xml_tree = etree.parse(metadata_xml_path,
+ self._xml_tree = etree.parse(_unicode_encode(metadata_xml_path,
+ encoding=_encodings['fs'], errors='strict'),
parser=etree.XMLParser(target=_MetadataTreeBuilder()))
except ImportError:
pass
@@ -241,7 +241,8 @@ class MetaDataXML(object):
if self._herdstree is None:
try:
- self._herdstree = etree.parse(self._herds_path,
+ self._herdstree = etree.parse(_unicode_encode(self._herds_path,
+ encoding=_encodings['fs'], errors='strict'),
parser=etree.XMLParser(target=_MetadataTreeBuilder()))
except (ImportError, IOError, SyntaxError):
return None
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2016-01-15 13:43 Michał Górny
0 siblings, 0 replies; 11+ messages in thread
From: Michał Górny @ 2016-01-15 13:43 UTC (permalink / raw
To: gentoo-commits
commit: 2695175bc8bae1df6ca24736689e7421834ebbb2
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 29 18:59:59 2015 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jan 15 13:43:16 2016 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=2695175b
portage.xml.metadata: Include maintainer type per GLEP 67
Acked-by: Alexander Berntsen <bernalex <AT> gentoo.org>
pym/portage/xml/metadata.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index fcd9dc0..33b9779 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -80,6 +80,8 @@ class _Maintainer(object):
@ivar name: Maintainer's name. Used for both Gentoo and upstream.
@type description: str or None
@ivar description: Description of what a maintainer does. Gentoo only.
+ @type maint_type: str or None
+ @ivar maint_type: GLEP67 maintainer type (project or person). Gentoo only.
@type restrict: str or None
@ivar restrict: e.g. >=portage-2.2 means only maintains versions
of Portage greater than 2.2. Should be DEPEND string with < and >
@@ -92,6 +94,7 @@ class _Maintainer(object):
self.email = None
self.name = None
self.description = None
+ self.maint_type = node.get('type')
self.restrict = node.get('restrict')
self.status = node.get('status')
for attr in node:
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [gentoo-commits] proj/portage:master commit in: pym/portage/xml/
@ 2016-11-07 21:23 Zac Medico
0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2016-11-07 21:23 UTC (permalink / raw
To: gentoo-commits
commit: db0dddfda68fbeed2dc6c48d9f8168fc2b42b8da
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 6 20:16:52 2016 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Nov 7 21:13:02 2016 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=db0dddfd
parse_metadata_use: apply English language preference (bug 599060)
Descriptions may exist for multiple languages, so prefer English
language descriptions for use.local.desc content.
X-Gentoo-Bug: 599060
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=599060
Acked-by: Brian Dolbec <dolsen <AT> gentoo.org>
pym/portage/xml/metadata.py | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/pym/portage/xml/metadata.py b/pym/portage/xml/metadata.py
index 4940bfb..39aa738 100644
--- a/pym/portage/xml/metadata.py
+++ b/pym/portage/xml/metadata.py
@@ -61,7 +61,7 @@ except (ImportError, SystemError, RuntimeError, Exception):
import re
import xml.etree.ElementTree
from portage import _encodings, _unicode_encode
-from portage.util import unique_everseen
+from portage.util import cmp_sort_key, unique_everseen
if sys.hexversion >= 0x3000000:
# pylint: disable=W0622
@@ -430,6 +430,19 @@ class MetaDataXML(object):
maint_str = " ".join(maintainers)
return maint_str
+# lang with higher value is preferred
+_lang_pref = {
+ "" : 0,
+ "en": 1,
+}
+
+
+def _cmp_lang(a, b):
+ a_score = _lang_pref.get(a.get("lang", ""), -1)
+ b_score = _lang_pref.get(b.get("lang", ""), -1)
+
+ return a_score - b_score
+
def parse_metadata_use(xml_tree):
"""
@@ -443,6 +456,9 @@ def parse_metadata_use(xml_tree):
if not usetags:
return uselist
+ # Sort by language preference in descending order.
+ usetags.sort(key=cmp_sort_key(_cmp_lang), reverse=True)
+
# It's possible to have multiple 'use' elements.
for usetag in usetags:
flags = usetag.findall("flag")
@@ -455,6 +471,16 @@ def parse_metadata_use(xml_tree):
if pkg_flag is not None:
flag_restrict = flag.get("restrict")
+ # Descriptions may exist for multiple languages, so
+ # ignore all except the first description found for a
+ # particular value of restrict (see bug 599060).
+ try:
+ uselist[pkg_flag][flag_restrict]
+ except KeyError:
+ pass
+ else:
+ continue
+
# emulate the Element.itertext() method from python-2.7
inner_text = []
stack = []
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-11-07 21:23 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-01 2:56 [gentoo-commits] proj/portage:master commit in: pym/portage/xml/ Zac Medico
-- strict thread matches above, loose matches on Subject: below --
2016-11-07 21:23 Zac Medico
2016-01-15 13:43 Michał Górny
2012-09-12 4:46 Zac Medico
2012-01-17 21:40 Zac Medico
2012-01-17 21:13 Zac Medico
2011-09-03 17:09 Zac Medico
2011-09-02 17:29 Arfrever Frehtes Taifersar Arahesis
2011-09-02 15:45 Zac Medico
2011-09-01 2:40 Zac Medico
2011-08-25 1:03 Zac Medico
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox