;idZddlmZddlmZidddddd d d d d ddddddddddddddddddd d!d"d#Zd$eDZGd%d&eZ d1d*Z d2d-Z d3d/Z d0S)4zNamespace-related objects.) annotations)Dictaz5http://schemas.openxmlformats.org/drawingml/2006/maincz6http://schemas.openxmlformats.org/drawingml/2006/chartcpzGhttp://schemas.openxmlformats.org/package/2006/metadata/core-propertiesdcz http://purl.org/dc/elements/1.1/dcmitypezhttp://purl.org/dc/dcmitype/dctermszhttp://purl.org/dc/terms/dgmz8http://schemas.openxmlformats.org/drawingml/2006/diagrammz:http://schemas.openxmlformats.org/officeDocument/2006/mathpicz8http://schemas.openxmlformats.org/drawingml/2006/picturerzChttp://schemas.openxmlformats.org/officeDocument/2006/relationshipsslz9http://schemas.openxmlformats.org/schemaLibrary/2006/mainwzrs 5 5 5e% 5 5 5ceZdZdZdfd ZddZeddZedd Z edd Z edd Z edd Z eddZ xZS)NamespacePrefixedTagzNValue object that knows the semantics of an XML tag having a namespace prefix.nstagstrcVtt|||S)N)superr__new__)clsr __class__s rr#zNamespacePrefixedTag.__new__ s$)3//77UCCCrcx|d\|_|_t|j|_dS)N:)split_pfx _local_partnsmap_ns_uri)selfrs r__init__zNamespacePrefixedTag.__init__#s/&+kk#&6&6# 4#TY' rreturnc&d|jd|jS)N{})r,r*r-s r clark_namezNamespacePrefixedTag.clark_name's<<<)9)9::rr4c||ddd\}}t|d|}||S)Nr2r')r(pfxmap)r$r4nsuri local_namers rfrom_clark_namez$NamespacePrefixedTag.from_clark_name+sD&qrrN0055z!%===**5s5zzrc|jS)z[The local part of this tag. E.g. "foobar" is returned for tag "f:foobar". )r*r3s r local_partzNamespacePrefixedTag.local_part1s rDict[str, str]c|j|jiS)zSingle-member dict mapping prefix of this tag to it's namespace name. Example: `{"f": "http://foo/bar"}`. This is handy for passing to xpath calls and other uses. )r)r,r3s rr+zNamespacePrefixedTag.nsmap9s 4<((rc|jS)zeThe namespace-prefix for this tag. For example, "f" is returned for tag "f:foobar". )r)r3s rnspfxzNamespacePrefixedTag.nspfxBs yrc|jS)zThe namespace URI for this tag. For example, "http://foo/bar" would be returned for tag "f:foobar" if the "f" prefix maps to "http://foo/bar" in nsmap. )r,r3s rr8zNamespacePrefixedTag.nsuriJs |r)rr )r/r )r4r r/r)r/r=)__name__ __module__ __qualname____doc__r#r.propertyr4 classmethodr:r<r+r@r8 __classcell__)r%s@rrrsXXDDDDDD((((;;;X;[    X )))X)XXrrprefixesr r/c@dd|DS)zNamespace declaration including each namespace-prefix in `prefixes`. Handy for adding required namespace declarations to a tree root element.  c6g|]}d|dt|dS)zxmlns:z=""r+rpfxs r znsdecls..Ys+MMMSSU3ZZZ8MMMr)join)rIs rnsdeclsrSTs% 88MMHMMM N NNrnspfxsr=cd|DS)zSubset namespace-prefix mappings specified by *nspfxs*. Any number of namespace prefixes can be supplied, e.g. namespaces("a", "r", "p"). c*i|]}|t|SrrNrOs rrznspfxmap..as . . .Cs . . .rr)rTs rnspfxmaprW\s / .v . . ..rtagc\|d\}}t|}d|d|S)aStands for "qualified name". This utility function converts a familiar namespace-prefixed tag name like "w:p" into a Clark-notation qualified tag name for lxml. For example, `qn("w:p")` returns "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}p". r'r1r2)r(r+)rXprefixtagrooturis rqnr]ds3iinnOFG -CCssGG $$rN)rIr r/r )rTr r/r=)rXr r/r ) rE __future__rtypingrr+itemsr7r rrSrWr]rrrras """"""  @  A  S  ,   .   *   E  E  E  N  E  G  A  R  1   6! & 6 5u{{}} 5 5 5444443444nOOOO//// % % % % % %r