MCPcopy Create free account
hub / github.com/ronreiter/interactive-tutorials / PrefixNormalizer

Class PrefixNormalizer

suds/sax/element.py:988–1146  ·  view source on GitHub ↗

The prefix normalizer provides namespace prefix normalization. @ivar node: A node to normalize. @type node: L{Element} @ivar branch: The nodes flattened branch. @type branch: [L{Element},..] @ivar namespaces: A unique list of namespaces (URI). @type namespaces: [str,]

Source from the content-addressed store, hash-verified

986
987
988class PrefixNormalizer:
989 """
990 The prefix normalizer provides namespace prefix normalization.
991 @ivar node: A node to normalize.
992 @type node: L{Element}
993 @ivar branch: The nodes flattened branch.
994 @type branch: [L{Element},..]
995 @ivar namespaces: A unique list of namespaces (URI).
996 @type namespaces: [str,]
997 @ivar prefixes: A reverse dict of prefixes.
998 @type prefixes: {u, p}
999 """
1000
1001 @classmethod
1002 def apply(cls, node):
1003 """
1004 Normalize the specified node.
1005 @param node: A node to normalize.
1006 @type node: L{Element}
1007 @return: The normalized node.
1008 @rtype: L{Element}
1009 """
1010 pn = PrefixNormalizer(node)
1011 return pn.refit()
1012
1013 def __init__(self, node):
1014 """
1015 @param node: A node to normalize.
1016 @type node: L{Element}
1017 """
1018 self.node = node
1019 self.branch = node.branch()
1020 self.namespaces = self.getNamespaces()
1021 self.prefixes = self.genPrefixes()
1022
1023 def getNamespaces(self):
1024 """
1025 Get the I{unique} set of namespaces referenced in the branch.
1026 @return: A set of namespaces.
1027 @rtype: set
1028 """
1029 s = set()
1030 for n in self.branch + self.node.ancestors():
1031 if self.permit(n.expns):
1032 s.add(n.expns)
1033 s = s.union(self.pset(n))
1034 return s
1035
1036 def pset(self, n):
1037 """
1038 Convert the nodes nsprefixes into a set.
1039 @param n: A node.
1040 @type n: L{Element}
1041 @return: A set of namespaces.
1042 @rtype: set
1043 """
1044 s = set()
1045 for ns in n.nsprefixes.items():

Callers 1

applyMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected