
    hi(                        d Z ddlmZ ddlZddlZddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZmZ  G d	 d
e          ZdS )zElxml custom element classes for core properties-related XML elements.    )annotationsN)Callablecast)_Element)	parse_xml)nsdeclsqn)BaseOxmlElement	ZeroOrOnec                     e Zd ZU dZded<    e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 edd          Z edd          Z edd          Z edd          Z edd          Zded<    edd          Z edd          Z edd          Zd eddd          z  ZedOd            ZedPd            Zej        dQd             ZedPd!            Zej        dQd"            ZedPd#            Zej        dQd$            ZedPd%            Zej        dQd&            Zed'             Zej        dRd)            ZedPd*            Z e j        dQd+            Z edPd,            Z!e!j        dQd-            Z!edPd.            Z"e"j        dQd/            Z"edPd0            Z#e#j        dQd1            Z#ed2             Z$e$j        dRd3            Z$ed4             Z%e%j        dRd5            Z%edSd7            Z&e&j        dTd8            Z&edPd9            Z'e'j        dQd:            Z'edPd;            Z(e(j        dQd<            Z(edPd=            Z)e)j        dQd>            Z)dUdAZ*dVdCZ+e,dWdF            Z- e.j/        dG          Z0e,dXdI            Z1dYdKZ2dZdLZ3d[dMZ4dNS )\CT_CorePropertiesaY  `cp:coreProperties` element.

    The root element of the Core Properties part stored as `/docProps/core.xml`. Implements many
    of the Dublin Core document metadata elements. String elements resolve to an empty string ('')
    if the element is not present in the XML. String elements are limited in length to 255 unicode
    characters.
    zCallable[[], _Element]get_or_add_revisionzcp:category )
successorszcp:contentStatuszdcterms:createdz
dc:creatorzdc:descriptionzdc:identifierzcp:keywordszdc:languagezcp:lastModifiedByzcp:lastPrintedzdcterms:modifiedzcp:revision_Element | Nonerevisionz
dc:subjectzdc:titlez
cp:versionz<cp:coreProperties %s/>
cpdcdctermsreturnc                 Z    t          t          t          t          j                            S )z(Return a new `cp:coreProperties` element)r   r   r   _coreProperties_tmplr       k/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/pptx/oxml/coreprops.pynew_corePropertiesz$CT_CoreProperties.new_coreProperties/   s!     %y1B1W'X'XYYYr   strc                ,    |                      d          S Ncreator_text_of_elementselfs    r   author_textzCT_CoreProperties.author_text4       $$Y///r   valuec                2    |                      d|           d S r   _set_element_textr#   r&   s     r   r$   zCT_CoreProperties.author_text8       y%00000r   c                ,    |                      d          S Ncategoryr    r"   s    r   category_textzCT_CoreProperties.category_text<       $$Z000r   c                2    |                      d|           d S r-   r(   r*   s     r   r/   zCT_CoreProperties.category_text@       z511111r   c                ,    |                      d          S Ndescriptionr    r"   s    r   comments_textzCT_CoreProperties.comments_textD   s    $$]333r   c                2    |                      d|           d S r4   r(   r*   s     r   r6   zCT_CoreProperties.comments_textH   s    }e44444r   c                ,    |                      d          S NcontentStatusr    r"   s    r   contentStatus_textz$CT_CoreProperties.contentStatus_textL   s    $$_555r   c                2    |                      d|           d S r9   r(   r*   s     r   r;   z$CT_CoreProperties.contentStatus_textP   s    66666r   c                ,    |                      d          S Ncreated_datetime_of_elementr"   s    r   created_datetimez"CT_CoreProperties.created_datetimeT   s    ((333r   dt.datetimec                2    |                      d|           d S r>   _set_element_datetimer*   s     r   rB   z"CT_CoreProperties.created_datetimeX   s    ""9e44444r   c                ,    |                      d          S N
identifierr    r"   s    r   identifier_textz!CT_CoreProperties.identifier_text\   s    $$\222r   c                2    |                      d|           d S rH   r(   r*   s     r   rJ   z!CT_CoreProperties.identifier_text`   s    |U33333r   c                ,    |                      d          S Nkeywordsr    r"   s    r   keywords_textzCT_CoreProperties.keywords_textd   r0   r   c                2    |                      d|           d S rM   r(   r*   s     r   rO   zCT_CoreProperties.keywords_texth   r2   r   c                ,    |                      d          S Nlanguager    r"   s    r   language_textzCT_CoreProperties.language_textl   r0   r   c                2    |                      d|           d S rR   r(   r*   s     r   rT   zCT_CoreProperties.language_textp   r2   r   c                ,    |                      d          S NlastModifiedByr    r"   s    r   lastModifiedBy_textz%CT_CoreProperties.lastModifiedBy_textt   s    $$%5666r   c                2    |                      d|           d S rW   r(   r*   s     r   rY   z%CT_CoreProperties.lastModifiedBy_textx   s    /77777r   c                ,    |                      d          S NlastPrintedr@   r"   s    r   lastPrinted_datetimez&CT_CoreProperties.lastPrinted_datetime|   s    ((777r   c                2    |                      d|           d S r\   rE   r*   s     r   r^   z&CT_CoreProperties.lastPrinted_datetime   s    ""=%88888r   c                ,    |                      d          S Nmodifiedr@   r"   s    r   modified_datetimez#CT_CoreProperties.modified_datetime   s    ((444r   c                2    |                      d|           d S ra   rE   r*   s     r   rc   z#CT_CoreProperties.modified_datetime   s    "":u55555r   intc                    | j         }|dS |j        }|dS 	 t          |          }n# t          $ r Y dS w xY w|dk     rdS |S )z#Integer value of revision property.Nr   )r   textre   
ValueError)r#   r   revision_strs      r   revision_numberz!CT_CoreProperties.revision_number   ss     =1}1	<((HH 	 	 	11	 a<<1s   ( 
66c                    t          |t                    r|dk     rd}t          ||z            |                                 }t	          |          |_        dS )z9Set revision property to string value of integer `value`.   z1revision property requires positive int, got '%s'N)
isinstancere   rh   r   r   rg   )r#   r&   tmplr   s       r   rj   z!CT_CoreProperties.revision_number   sW     %%% 	+FDTE\***++--E

r   c                ,    |                      d          S Nsubjectr    r"   s    r   subject_textzCT_CoreProperties.subject_text   r%   r   c                2    |                      d|           d S rp   r(   r*   s     r   rr   zCT_CoreProperties.subject_text   r+   r   c                ,    |                      d          S Ntitler    r"   s    r   
title_textzCT_CoreProperties.title_text   s    $$W---r   c                2    |                      d|           d S ru   r(   r*   s     r   rw   zCT_CoreProperties.title_text   s    w.....r   c                ,    |                      d          S Nversionr    r"   s    r   version_textzCT_CoreProperties.version_text   r%   r   c                2    |                      d|           d S rz   r(   r*   s     r   r|   zCT_CoreProperties.version_text   r+   r   property_namedt.datetime | Nonec                    t          dt          | |                    }|d S |j        }|d S 	 |                     |          S # t          $ r Y d S w xY w)Nr   )r   getattrrg   _parse_W3CDTF_to_datetimerh   )r#   r~   elementdatetime_strs       r   rA   z&CT_CoreProperties._datetime_of_element   ss    ('$*F*FGG?4|4	11,??? 	 	 	44	s   A 
AA	prop_namec                D    d|z  }t          | |          } |            }|S )z@Return element returned by 'get_or_add_' method for `prop_name`.zget_or_add_%s)r   )r#   r   get_or_add_method_nameget_or_add_methodr   s        r   _get_or_addzCT_CoreProperties._get_or_add   s1    !09!<#D*@AA##%%r   datetime
offset_strc                :   | j                             |          }|t          t          |           d          |                                \  }}}|dk    rdnd}t          |          |z  }t          |          |z  }	t          j        ||	          }
||
z   S )zReturn |datetime| instance offset from `datetime` by offset specified in `offset_str`.

        `offset_str` is a string like `'-07:00'`.
        Nz is not a valid offset string+rl   )hoursminutes)_offset_patternmatchrh   reprgroupsre   dt	timedelta)clsr   r   r   sign	hours_strminutes_strsign_factorr   r   tds              r   
_offset_dtzCT_CoreProperties._offset_dt   s     #))*55=Z 0 0OOOPPP',||~~$i CKKbbQI,k""[0\w777"}r   z([+-])(\d\d):(\d\d)
w3cdtf_strc                    d}|d d         }|dd          }d }|D ]3}	 t           j                            ||          }$# t          $ r Y 0w xY w|d}t          ||z            t	          |          dk    r|                     ||          S |S )N)z%Y-%m-%dT%H:%M:%Sz%Y-%m-%dz%Y-%mz%Y   z+could not parse W3CDTF datetime string '%s'   )r   r   strptimerh   lenr   )r   r   	templatesparseable_partr   	timestamprn   s          r   r   z+CT_CoreProperties._parse_W3CDTF_to_datetime   s     E	 $CRC_
	 	 	DK00FF		   @DTJ.///z??a>>)Z888s    ?
AANonec                   t          |t          j                  s!d}t          |t	          |          z            |                     |          }|                    d          }||_        |dv r]|                     t          d          d           |                    t          d          d           | j
        t          d          = dS dS )	zCSet date/time value of child element having `prop_name` to `value`.z;property requires <type 'datetime.datetime'> object, got %sz%Y-%m-%dT%H:%M:%SZ)r?   rb   zxsi:foobarzxsi:typezdcterms:W3CDTFN)rm   r   r   rh   typer   strftimerg   setr	   attrib)r#   r   r&   rn   r   dt_strs         r   rF   z'CT_CoreProperties._set_element_datetime   s    %-- 	1PDTDKK/000""9-- 455///
 HHR	]]E***KK:(8999ByMM*** 0/r   c                    t          |          }t          |          dk    rd}t          ||z            |                     |          }||_        dS )z/Set string value of `name` property to `value`.   z0exceeded 255 char limit for property, got:

'%s'N)r   r   rh   r   rg   )r#   r   r&   rn   r   s        r   r)   z#CT_CoreProperties._set_element_text  sS    E

u::GDTE\***""9--r   c                J    t          | |          }|dS |j        dS |j        S )N )r   rg   )r#   r~   r   s      r   r!   z"CT_CoreProperties._text_of_element  s0    $..?2<2|r   N)r   r   )r   r   )r&   r   )r&   rC   )r   re   )r&   re   )r~   r   r   r   )r   r   )r   rC   r   r   )r   r   r   rC   )r   r   r&   rC   r   r   )r   r   r&   r   r   r   )r~   r   r   r   )5__name__
__module____qualname____doc____annotations__r   r.   r:   r?   r   r5   rI   rN   rS   rX   r]   rb   r   rq   rv   r{   r   r   staticmethodr   propertyr$   setterr/   r6   r;   rB   rJ   rO   rT   rY   r^   rc   rj   rr   rw   r|   rA   r   classmethodr   recompiler   r   rF   r)   r!   r   r   r   r   r      s[          0///y2666HI0R@@@Mi)b999Gi444G),<<<K?r:::Jy2666Hy2666HY2rBBBN),<<<Ky+;;;H )	"! ! !H     i444GIjR000Ei444G6tY9W9WWZ Z Z \Z 0 0 0 X0 1 1 1 1 1 1 1 X1 2 2 2 2 4 4 4 X4 5 5 5 5 6 6 6 X6 7 7 7 7 4 4 X4 5 5 5 5 3 3 3 X3 4 4 4 4 1 1 1 X1 2 2 2 2 1 1 1 X1 2 2 2 2 7 7 7 X7 8 8 8  8 8 8 X8  9 9 9 ! 9 5 5 X5 6 6 6 6    X$ # # # # 0 0 0 X0 1 1 1 1 . . . X. / / / / 0 0 0 X0 1 1 1 1          [ !bj!788O   [2+ + + +"        r   r   )r   
__future__r   r   r   r   typingr   r   
lxml.etreer   	pptx.oxmlr   pptx.oxml.nsr   r	   pptx.oxml.xmlchemyr
   r   r   r   r   r   <module>r      s    K K " " " " " "     				 ! ! ! ! ! ! ! !             $ $ $ $ $ $ $ $ 9 9 9 9 9 9 9 9P P P P P P P P P Pr   