From a992b577f180577f82cb14bb7b5bd5c11227d7e4 Mon Sep 17 00:00:00 2001 From: Tales Paiva Nogueira Date: Thu, 21 Apr 2016 13:10:23 +0200 Subject: [PATCH 1/2] Include attributes into RelationMembers. --- overpy/__init__.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/overpy/__init__.py b/overpy/__init__.py index afe7e12..99e1438 100644 --- a/overpy/__init__.py +++ b/overpy/__init__.py @@ -892,7 +892,7 @@ class RelationMember(object): Base class to represent a member of a relation. """ - def __init__(self, ref=None, role=None, result=None): + def __init__(self, attributes=None, ref=None, role=None, result=None): """ :param ref: Reference Id :type ref: Integer @@ -903,6 +903,7 @@ def __init__(self, ref=None, role=None, result=None): self.ref = ref self._result = result self.role = role + self.attributes = attributes @classmethod def from_json(cls, data, result=None): @@ -925,7 +926,15 @@ def from_json(cls, data, result=None): ref = data.get("ref") role = data.get("role") - return cls(ref=ref, role=role, result=result) + + attributes = {} + ignore = ["type", "ref", "role"] + for n, v in data.items(): + if n in ignore: + continue + attributes[n] = v + + return cls(attributes=None, ref=ref, role=role, result=result) @classmethod def from_xml(cls, child, result=None): @@ -950,7 +959,15 @@ def from_xml(cls, child, result=None): if ref is not None: ref = int(ref) role = child.attrib.get("role") - return cls(ref=ref, role=role, result=result) + + attributes = {} + ignore = ["ref", "role"] + for n, v in child.attrib.items(): + if n in ignore: + continue + attributes[n] = v + + return cls(attributes=attributes, ref=ref, role=role, result=result) class RelationNode(RelationMember): From cb131a108b54345ecc0b8dc55858b90d22112fa8 Mon Sep 17 00:00:00 2001 From: Tales Paiva Nogueira Date: Thu, 21 Apr 2016 14:44:33 +0200 Subject: [PATCH 2/2] Fixed attributes set as None in constructor. --- overpy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overpy/__init__.py b/overpy/__init__.py index 99e1438..aebefc5 100644 --- a/overpy/__init__.py +++ b/overpy/__init__.py @@ -934,7 +934,7 @@ def from_json(cls, data, result=None): continue attributes[n] = v - return cls(attributes=None, ref=ref, role=role, result=result) + return cls(attributes=attributes, ref=ref, role=role, result=result) @classmethod def from_xml(cls, child, result=None):