MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _namespaces

Function _namespaces

tools/python-3.11.9-amd64/Lib/xml/etree/ElementTree.py:804–863  ·  view source on GitHub ↗
(elem, default_namespace=None)

Source from the content-addressed store, hash-verified

802 yield file.write, encoding
803
804def _namespaces(elem, default_namespace=None):
805 # identify namespaces used in this tree
806
807 # maps qnames to *encoded* prefix:local names
808 qnames = {None: None}
809
810 # maps uri:s to prefixes
811 namespaces = {}
812 if default_namespace:
813 namespaces[default_namespace] = ""
814
815 def add_qname(qname):
816 # calculate serialized qname representation
817 try:
818 if qname[:1] == "{":
819 uri, tag = qname[1:].rsplit("}", 1)
820 prefix = namespaces.get(uri)
821 if prefix is None:
822 prefix = _namespace_map.get(uri)
823 if prefix is None:
824 prefix = "ns%d" % len(namespaces)
825 if prefix != "xml":
826 namespaces[uri] = prefix
827 if prefix:
828 qnames[qname] = "%s:%s" % (prefix, tag)
829 else:
830 qnames[qname] = tag # default element
831 else:
832 if default_namespace:
833 # FIXME: can this be handled in XML 1.0?
834 raise ValueError(
835 "cannot use non-qualified names with "
836 "default_namespace option"
837 )
838 qnames[qname] = qname
839 except TypeError:
840 _raise_serialization_error(qname)
841
842 # populate qname and namespaces table
843 for elem in elem.iter():
844 tag = elem.tag
845 if isinstance(tag, QName):
846 if tag.text not in qnames:
847 add_qname(tag.text)
848 elif isinstance(tag, str):
849 if tag not in qnames:
850 add_qname(tag)
851 elif tag is not None and tag is not Comment and tag is not PI:
852 _raise_serialization_error(tag)
853 for key, value in elem.items():
854 if isinstance(key, QName):
855 key = key.text
856 if key not in qnames:
857 add_qname(key)
858 if isinstance(value, QName) and value.text not in qnames:
859 add_qname(value.text)
860 text = elem.text
861 if isinstance(text, QName) and text.text not in qnames:

Callers 1

writeMethod · 0.85

Calls 4

add_qnameFunction · 0.85
iterMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected