o
    a]                     @   s   d Z ddlmZmZmZ i ddddddd	d
dddddddddddddddddddddd d!d"Zed#d$ e D ZG d%d& d&e	Z
d'd( Zd)d* Zd+d, Zd-S ).z
Namespace-related objects.
    )absolute_importprint_functionunicode_literalsaz5http://schemas.openxmlformats.org/drawingml/2006/maincz6http://schemas.openxmlformats.org/drawingml/2006/chartcpzGhttp://schemas.openxmlformats.org/package/2006/metadata/core-propertiesZdcz http://purl.org/dc/elements/1.1/Zdcmitypezhttp://purl.org/dc/dcmitype/Zdctermszhttp://purl.org/dc/terms/Zdgmz8http://schemas.openxmlformats.org/drawingml/2006/diagrammz:http://schemas.openxmlformats.org/officeDocument/2006/mathZpicz8http://schemas.openxmlformats.org/drawingml/2006/picturerzChttp://schemas.openxmlformats.org/officeDocument/2006/relationshipsslz9http://schemas.openxmlformats.org/schemaLibrary/2006/mainwz<http://schemas.openxmlformats.org/wordprocessingml/2006/mainZw14z4http://schemas.microsoft.com/office/word/2010/wordmlZwpzFhttp://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawingxmlz$http://www.w3.org/XML/1998/namespaceZxsiz)http://www.w3.org/2001/XMLSchema-instancec                 c   s    | ]	\}}||fV  qd S N ).0keyvaluer   r   <D:\Projects\ConvertPro\env\Lib\site-packages\docx\oxml\ns.py	<genexpr>       r   c                       sp   e Zd ZdZ fddZdd Zedd Zedd	 Z	ed
d Z
edd Zedd Zedd Z  ZS )NamespacePrefixedTagz\
    Value object that knows the semantics of an XML tag having a namespace
    prefix.
    c                    s   t t| | |S r   )superr   __new__)clsnstagargs	__class__r   r   r   %   s   zNamespacePrefixedTag.__new__c                 C   s"   | d\| _| _t| j | _d S )N:)split_pfx_local_partnsmap_ns_uri)selfr   r   r   r   __init__(   s   zNamespacePrefixedTag.__init__c                 C   s   d| j | jf S )N{%s}%s)r"   r    r#   r   r   r   
clark_name,   s   zNamespacePrefixedTag.clark_namec                 C   s.   |dd   d\}}dt| |f }| |S )N   }z%s:%s)r   pfxmap)r   r'   nsuriZ
local_namer   r   r   r   from_clark_name0   s   z$NamespacePrefixedTag.from_clark_namec                 C      | j S )zu
        Return the local part of the tag as a string. E.g. 'foobar' is
        returned for tag 'f:foobar'.
        )r    r&   r   r   r   
local_part6      zNamespacePrefixedTag.local_partc                 C   s   | j | jiS )z
        Return a dict having a single member, mapping the namespace prefix of
        this tag to it's namespace name (e.g. {'f': 'http://foo/bar'}). This
        is handy for passing to xpath calls and other uses.
        )r   r"   r&   r   r   r   r!   >   s   zNamespacePrefixedTag.nsmapc                 C   r-   )zr
        Return the string namespace prefix for the tag, e.g. 'f' is returned
        for tag 'f:foobar'.
        )r   r&   r   r   r   nspfxG   r/   zNamespacePrefixedTag.nspfxc                 C   r-   )z
        Return the namespace URI for the tag, e.g. 'http://foo/bar' would be
        returned for tag 'f:foobar' if the 'f' prefix maps to
        'http://foo/bar' in nsmap.
        )r"   r&   r   r   r   r+   O   s   zNamespacePrefixedTag.nsuri)__name__
__module____qualname____doc__r   r$   propertyr'   classmethodr,   r.   r!   r0   r+   __classcell__r   r   r   r   r       s     




r   c                  G   s   d dd | D S )z
    Return a string containing a namespace declaration for each of the
    namespace prefix strings, e.g. 'p', 'ct', passed as *prefixes*.
     c                 S   s   g | ]
}d |t | f qS )zxmlns:%s="%s"r!   r   pfxr   r   r   
<listcomp>^   s    znsdecls.<locals>.<listcomp>)join)prefixesr   r   r   nsdeclsY   s   r?   c                  G   s   t dd | D S )z
    Return a dict containing the subset namespace prefix mappings specified by
    *nspfxs*. Any number of namespace prefixes can be supplied, e.g.
    namespaces('a', 'r', 'p').
    c                 s   s    | ]	}|t | fV  qd S r   r9   r:   r   r   r   r   g   r   znspfxmap.<locals>.<genexpr>)dict)Znspfxsr   r   r   nspfxmapa   s   rA   c                 C   s"   |  d\}}t| }d||f S )z
    Stands for "qualified name", a utility function to turn a namespace
    prefixed tag name into a Clark-notation qualified tag name for lxml. For
    example, ``qn('p:cSld')`` returns ``'{http://schemas.../main}cSld'``.
    r   r%   )r   r!   )tagprefixZtagrootZurir   r   r   qnj   s   rD   N)r4   Z
__future__r   r   r   r!   r@   itemsr*   strr   r?   rA   rD   r   r   r   r   <module>   sP   	
9	