Xj dZddlmZddlmZmZmZmZddlm Z ddl m Z m Z erddl mZe jZe j"dd Zej'edd Zdd Z d dd Zy )zXML parser for python-docx.) annotations) TYPE_CHECKINGDictTypecast)etree)NamespacePrefixedTagnsmap)BaseOxmlElementTF)remove_blank_textresolve_entitiescJtdtj|tS)zRoot lxml element obtained by parsing XML character string `xml`. The custom parser is used, so custom element classes are produced for elements in `xml` that have them. r )rr fromstring oxml_parser)xmls d/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/docx/oxml/parser.py parse_xmlrs !5#3#3C#E FFcn|jd\}}tjt|}|||<y)zRegister an lxml custom element-class to use for `tag`. A instance of `cls` to be constructed when the oxml parser encounters an element with matching `tag`. `tag` is a string of the form `nspfx:tagroot`, e.g. `'w:document'`. :N)splitelement_class_lookup get_namespacer )tagclsnspfxtagroot namespaces rregister_element_clsr s3YYs^NE7$225<@IIgrNcxt|}| |j}tj|j||S)alReturn a 'loose' lxml element having the tag specified by `nsptag_str`. The tag in `nsptag_str` must contain the standard namespace prefix, e.g. `a:tbl`. The resulting element is an instance of the custom element class for this tag name if one is defined. A dictionary of attribute values may be provided as `attrs`; they are set if present. All namespaces defined in the dict `nsdecls` are declared in the element using the key as the prefix and the value as the namespace name. If `nsdecls` is not provided, a single namespace declaration is added based on the prefix on `nsptag_str`. )attribr )r r r makeelement clark_name) nsptag_strattrsnsdeclsnsptags r OxmlElementr(,s:"* -F,,  " "6#4#4U' " RRr)rz str | bytesreturnz'BaseOxmlElement')rstrrzType['BaseOxmlElement'])NN)r$r*r%Dict[str, str] | Noner&r+r)z BaseOxmlElement | etree._Element)__doc__ __future__rtypingrrrrlxmlr docx.oxml.nsr r docx.oxml.xmlchemyr ElementNamespaceClassLookupr XMLParserrset_element_class_lookuprrr(rrr6s""22429u88:eoouM $$%9:G $(%)SS S#S& Sr