+
    irc                       R t ^ RIHt ^ RIt^ RIHtHtHtHtH	t	H
t
 ^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHtHt ^ RIHt ]'       d   ^ R	IHt ^ R
IHt R R lt ! R R]4      t]
! R4      t ! R R] 4      t! ! R R4      t" ! R R]"4      t# ! R R]"4      t$ ! R R4      t% ! R R]%4      t& ! R R]%4      t' ! R R]%4      t( ! R  R!]%4      t) ! R" R#]%4      t* ! R$ R%]%4      t+ ! R& R']P                  ]!R(7      t,R# ))z?Enabling declarative definition of lxml custom element classes.)annotationsN)TYPE_CHECKINGAnyCallableSequenceTypeTypeVar)etree)ElementBase_Element)InvalidXmlError)NamespacePrefixedTagnsmapqn)lazyproperty)BaseXmlEnum)BaseSimpleTypec                   V ^8  d   QhRR/# )   elementr
    )formats   "X/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/docx/oxml/xmlchemy.py__annotate__r      s      ;     c                J    \         P                  ! V RRR7      p\        V4      # )zSSerialize `element` to human-readable XML suitable for tests.

No XML declaration.
unicodeT)encodingpretty_print)r	   tostring	XmlString)r   xmls   & r   serialize_for_readingr"      s     
 ..94
HCS>r   c                      ] tR t^tRt]P                  ! R4      tR R ltR R lt	R R lt
R	 R
 lt]R R l4       tRtR# )r    zYProvides string comparison override suitable for serialized XML that is useful
for tests.z)( *</?[\w:]+)(.*?)(/?>)([^<]*</[\w:]+>)?$c                    V ^8  d   QhRRRR/# r   otherobjectreturnboolr   )r   s   "r   r   XmlString.__annotate__+   s     
 
F 
t 
r   c                	   \        V\        4      '       g   R # V P                  4       pVP                  4       p\        V4      \        V4      8w  d   R # \	        W#4       F  w  rEV P                  WE4      '       d   K   R # 	  R# )FT)
isinstancestr
splitlineslenzip_eq_elm_strs)selfr&   lineslines_otherline
line_others   &&    r   __eq__XmlString.__eq__+   sk    %%%!&&(u:[)) #E 7D$$T66 !8 r   c                    V ^8  d   QhRRRR/# r%   r   )r   s   "r   r   r*   7   s     & &F &t &r   c                	.    V P                  V4      '       * # N)r7   )r2   r&   s   &&r   __ne__XmlString.__ne__7   s    ;;u%%%r   c                    V ^8  d   QhRRRR/# )r   attrsr-   r(   z	list[str]r   )r   s   "r   r   r*   :   s        s  y  r   c                X    VP                  4       pVP                  4       p\        V4      # )z{Return a sequence of attribute strings parsed from `attrs`.

Each attribute string is stripped of whitespace on both ends.
)stripsplitsorted)r2   r?   attr_lsts   && r   	_attr_seqXmlString._attr_seq:   s%    
 ;;=hr   c                    V ^8  d   QhRRRR/# )r   r5   r-   line_2r   )r   s   "r   r   r*   C   s       c r   c                    V P                  V4      w  r4rVV P                  V4      w  rxrW78w  d   R# V P                  V4      V P                  V4      8w  d   R# WY8w  d   R# Wj8H  # )zRReturn True if the element in `line_2` is XML equivalent to the element in
`line`.F)_parse_linerE   )r2   r5   rH   frontr?   closetextfront_2attrs_2close_2text_2s   &&&        r   r1   XmlString._eq_elm_strsC   se     %)$4$4T$:!e,0,<,<V,D)'>>% DNN7$;;~r   c                    V ^8  d   QhRRRR/# )r   r5   r-   r(   ztuple[str, str, str, str]r   )r   s   "r   r   r*   Q   s     ) )s )'@ )r   c                    V P                   P                  V4      pVf   R# \        ^^4       Uu. uF  q2P                  V4      NK  	  upw  rErgWEWg3# u upi )zI(front, attrs, close, text) 4-tuple result of parsing XML element `line`.) rU   rU   rU   )_xml_elm_line_pattmatchrangegroup)clsr5   rW   nrK   r?   rL   rM   s   &&      r   rJ   XmlString._parse_lineP   s[     &&,,T2=!!=B1a[$I[[[^[$I!eU(( %Js   Ar   N)__name__
__module____qualname____firstlineno____doc__recompilerV   r7   r<   rE   r1   classmethodrJ   __static_attributes__r   r   r   r    r       sA     $PQ
&  ) )r   r    _Tc                  &    ] tR t^]tRtR R ltRtR# )MetaOxmlElementzMetaclass for BaseOxmlElement.c               $    V ^8  d   QhRRRRRR/# )r   clsnamer-   basesztuple[type, ...]	namespacezdict[str, Any]r   )r   s   "r   r   MetaOxmlElement.__annotate__`   s"     7 7s 7+; 7 7r   c                	    \         \        \        \        \        \
        \        3pVP                  4        F)  w  rV\        Wd4      '       g   K  VP                  W4       K+  	  R # r;   )
OneAndOnlyOne	OneOrMoreOptionalAttributeRequiredAttribute
ZeroOrMore	ZeroOrOneZeroOrOneChoiceitemsr,   populate_class_members)rZ   rj   rk   rl   dispatchablekeyvalues   &&&&   r   __init__MetaOxmlElement.__init__`   sL    
 $//+JC%..,,S6 ,r   r   N)r]   r^   r_   r`   ra   r{   re   r   r   r   rh   rh   ]   s    (7 7r   rh   c                     a  ] tR t^otRtR V 3R lltR R ltR t]R 4       t	]R R	 l4       t
]R
 R l4       tRtV ;t# )BaseAttributezRBase class for OptionalAttribute and RequiredAttribute.

Provides common methods.
c                    V ^8  d   QhRRRR/# )r   	attr_namer-   simple_type(Type[BaseXmlEnum] | Type[BaseSimpleType]r   )r   s   "r   r   BaseAttribute.__annotate__u   s     ( (# (4\ (r   c                	D   < \         \        V `  4        Wn        W n        R # r;   )superr~   r{   
_attr_name_simple_type)r2   r   r   	__class__s   &&&r   r{   BaseAttribute.__init__u   s    mT+-#'r   c               $    V ^8  d   QhRRRRRR/# r   element_clsrh   	prop_namer-   r(   Noner   )r   s   "r   r   r   z   s"     " "/ "c "VZ "r   c                >    Wn         W n        V P                  4        R# z-Add the appropriate methods to `element_cls`.N)_element_cls
_prop_name_add_attr_propertyr2   r   r   s   &&&r   rw   $BaseAttribute.populate_class_membersz   s    '#!r   c                    \        V P                  V P                  R4      p\        V P                  V P
                  V4       R# )zAdd a read/write `.{prop_name}` property to the element class.

The property returns the interpreted value of this attribute on access and
changes the attribute value to its ST_* counterpart on assignment.
N)property_getter_settersetattrr   r   r2   	property_s   & r   r    BaseAttribute._add_attr_property   s0     T\\4<<>	!!4??I>r   c                	f    R V P                   9   d   \        V P                   4      # V P                   # ):)r   r   r2   s   &r   _clark_nameBaseAttribute._clark_name   s'    $//!doo&&r   c                   V ^8  d   QhRR/# r   r(   z'Callable[[BaseOxmlElement], Any | None]r   )r   s   "r   r   r      s    EE@Er   c                	    R # r;   r   r   s   &r   r   BaseAttribute._getter   s    BEr   c                   V ^8  d   QhRR/# )r   r(   z-Callable[[BaseOxmlElement, Any | None], None]r   )r   s   "r   r   r      s     < <	6<r   c                	    R # r;   r   r   s   &r   r   BaseAttribute._setter   s     9<r   )r   r   r   r   )r]   r^   r_   r`   ra   r{   rw   r   r   r   r   r   re   __classcell__r   s   @r   r~   r~   o   sR    
( (
"?  
 E E< <r   r~   c                  r   a  ] tR t^tRtR
R V 3R lllt]R 4       t]R R l4       t]R R l4       t	R	t
V ;t# )rq   zDefines an optional attribute on a custom element class.

An optional attribute returns a default value when not present for reading. When
assigned |None|, the attribute is removed, but still returns the default value when
one is specified.
c               $    V ^8  d   QhRRRRRR/# )r   r   r-   r   r   defaultz0BaseXmlEnum | BaseSimpleType | str | bool | Noner   )r   s   "r   r   OptionalAttribute.__annotate__   s)          >  B	 r   c                	:   < \         \        V `  W4       W0n        R # r;   )r   rq   r{   _default)r2   r   r   r   r   s   &&&&r   r{   OptionalAttribute.__init__   s     	/	Gr   c                N    V P                   P                   RV P                   R2# )z;String to use as `__doc__` attribute of attribute property. type-converted value of ``z`` attribute, or |None| (or specified default value) if not present. Assigning the default value causes the attribute to be removed from the element.r   r]   r   r   s   &r   
_docstringOptionalAttribute._docstring   s4       ))* +//" #9:	
r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s      	0r   c                <   a  R V 3R llpS P                   Vn        V# )zJFunction suitable for `__get__()` method on attribute property descriptor.c                    V ^8  d   QhRRRR/# r   objBaseOxmlElementr(   
Any | Noner   )r   s   "r   r   /OptionalAttribute._getter.<locals>.__annotate__   s     	> 	> 	>	>r   c                   < V P                  SP                  4      pVf   SP                  # SP                  P	                  V4      # r;   )getr   r   r   from_xmlr   attr_str_valuer2   s   & r   get_attr_value1OptionalAttribute._getter.<locals>.get_attr_value   s@     !WWT%5%56N%}}$$$--n==r   r   ra   r2   r   s   f r   r   OptionalAttribute._getter   s!    	> 	> "&r   c                   V ^8  d   QhRR/# r   r(   z&Callable[[BaseOxmlElement, Any], None]r   )r   s   "r   r   r      s      ? r   c                   a  R V 3R llpV# )zJFunction suitable for `__set__()` method on attribute property descriptor.c                    V ^8  d   QhRRRR/# )r   r   r   rz   r   r   )r   s   "r   r   /OptionalAttribute._setter.<locals>.__annotate__   s     
	1 
	1 
	1
 
	1r   c                x  < Ve   VSP                   8X  d5   SP                  V P                  9   d   V P                  SP                   R # SP                  P	                  V4      pVf5   SP                  V P                  9   d   V P                  SP                   R # V P                  SP                  V4       R # r;   )r   r   attribr   to_xmlsetr   rz   	str_valuer2   s   && r   set_attr_value1OptionalAttribute._setter.<locals>.set_attr_value   s    } 6##szz1

4#3#34))007I ##szz1

4#3#34GGD$$i0r   r   r2   r   s   f r   r   OptionalAttribute._setter   s    
	1 
	1 r   )r   r;   )r]   r^   r_   r`   ra   r{   r   r   r   r   re   r   r   s   @r   rq   rq      sN        
 
     r   rq   c                  V    ] tR t^tRt]R 4       t]R R l4       t]R R l4       tRt	R# )	rr   a  Defines a required attribute on a custom element class.

A required attribute is assumed to be present for reading, so does not have a
default value; its actual value is always used. If missing on read, an
|InvalidXmlError| is raised. It also does not remove the attribute if |None| is
assigned. Assigning |None| raises |TypeError| or |ValueError|, depending on the
simple type of the attribute.
c                R    V P                   P                  : RV P                  : R2# )zYReturn the string to use as the ``__doc__`` attribute of the property for
this attribute.r   z`` attribute.r   r   s   &r   r   RequiredAttribute._docstring   s$    
 &&OO
 	
r   c                   V ^8  d   QhRR/# )r   r(   z Callable[[BaseOxmlElement], Any]r   )r   s   "r   r   RequiredAttribute.__annotate__   s      9 r   c                <   a  R V 3R llpS P                   Vn        V# )zDfunction object suitable for "get" side of attr property descriptor.c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   /RequiredAttribute._getter.<locals>.__annotate__   s     	> 	> 	>J 	>r   c                   < V P                  SP                  4      pVf(   \        RSP                  : RV P                  : 24      hSP
                  P                  V4      # )Nz
required 'z#' attribute not present on element )r   r   r   r   tagr   r   r   s   & r   r   1RequiredAttribute._getter.<locals>.get_attr_value   sV     WWT%5%56N%%KO??\_\c\cd  $$--n==r   r   r   s   f r   r   RequiredAttribute._getter   s!    	> 	> "&r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     	 	? 	r   c                   a  R V 3R llpV# )zIfunction object suitable for "set" side of attribute property descriptor.c                    V ^8  d   QhRRRR/# )r   r   r   rz   r   r   )r   s   "r   r   /RequiredAttribute._setter.<locals>.__annotate__   s     	1 	1 	1 	1r   c                   < SP                   P                  V4      pVf   \        RV R24      hV P                  SP                  V4       R # )Nzcannot assign z to this required attribute)r   r   
ValueErrorr   r   r   s   && r   r   1RequiredAttribute._setter.<locals>.set_attr_value   sH    ))007I  >%8S!TUUGGD$$i0r   r   r   s   f r   r   RequiredAttribute._setter   s    	1 	1 r   r   N)
r]   r^   r_   r`   ra   r   r   r   r   re   r   r   r   rr   rr      sC     
 
   	 	r   rr   c                     a  ] tR tRtRtRR V 3R llltR R ltR tR tR	 t	R
 t
R t]R 4       tR tR R lt]R R l4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tRtV ;t# )_BaseChildElementi  zBase class for the child-element classes.

The child-element sub-classes correspond to varying cardinalities, such as ZeroOrOne
and ZeroOrMore.
c                    V ^8  d   QhRRRR/# )r   
nsptagnamer-   
successorstuple[str, ...]r   )r   s   "r   r   _BaseChildElement.__annotate__  s     & &3 &O &r   c                	D   < \         \        V `  4        Wn        W n        R # r;   )r   r   r{   _nsptagname_successors)r2   r   r   r   s   &&&r   r{   _BaseChildElement.__init__  s    /1%%r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r     s"     $ $/ $c $VZ $r   c                    Wn         W n        R# )zFBaseline behavior for adding the appropriate methods to `element_cls`.N)r   r   r   s   &&&r   rw   (_BaseChildElement.populate_class_members  s    '#r   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )zGAdd an ``_add_x()`` method to the element class for this child element.c                    V ^8  d   QhRRRR/# )r   r   r   r?   r   r   )r   s   "r   r   2_BaseChildElement._add_adder.<locals>.__annotate__  s     	 	O 	c 	r   c                   < \        V SP                  4      pV! 4       pVP                  4        F  w  rE\        W4V4       K  	  \        V SP                  4      pV! V4       V# r;   )getattr_new_method_namerv   r   _insert_method_name)r   r?   
new_methodchildry   rz   insert_methodr2   s   &,     r   
_add_child0_BaseChildElement._add_adder.<locals>._add_child  sW     d&;&;<JLE#kkm
E* ,#C)A)ABM% Lr   SAdd a new ``<%s>`` child element unconditionally, inserted in the correct sequence.N)r   ra   _add_to_class_add_method_name)r2   r  s   f r   
_add_adder_BaseChildElement._add_adder  s@    	 	#%)%5%56 	 	400*=r   c                    V P                   pRV P                  ,          Vn        V P                  V P                  V4       R# )zAdd a ``_new_{prop_name}()`` method to the element class that creates a new,
empty element of the correct type, having no attributes.zYReturn a "loose", newly created ``<%s>`` element having no attributes, text, or children.N)_creatorr   ra   r  r   )r2   creators   & r   _add_creator_BaseChildElement._add_creator+  s?     --(*.*:*:; 	 	400':r   c                v    \        V P                  RR4      p\        V P                  V P                  V4       R# )zUAdd a read-only ``{prop_name}`` property to the element class for this child
element.N)r   r   r   r   r   r   s   & r   _add_getter_BaseChildElement._add_getter5  s,     T\\46	!!4??I>r   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )zJAdd an ``_insert_x()`` method to the element class for this child element.c                    V ^8  d   QhRRRR/# )r   r   r   r  r   )r   s   "r   r   5_BaseChildElement._add_inserter.<locals>.__annotate__?  s     	 	 	 	r   c                D   < V P                   ! V.SP                  O5!   V# r;   )insert_element_beforer   r   r  r2   s   &&r   _insert_child6_BaseChildElement._add_inserter.<locals>._insert_child?  s!    %%e?d.>.>?Lr   zYReturn the passed ``<%s>`` element after inserting it as a child in the correct sequence.N)r   ra   r  r  )r2   r  s   f r   _add_inserter_BaseChildElement._add_inserter<  s@    	 	
)+/+;+;< 	 	433]Cr   c                    RV P                   ,          p\        V P                  RR4      p\        V P                  W4       R# )zzAdd a read-only ``{prop_name}_lst`` property to the element class to retrieve
a list of child elements matching this type.z%s_lstN)r   r   _list_getterr   r   )r2   r   r   s   &  r   _add_list_getter"_BaseChildElement._add_list_getterI  s6     t.	T..d;	!!98r   c                	(    R V P                   ,          # )z_add_%sr   r   s   &r   r	  "_BaseChildElement._add_method_nameP      4??**r   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )z<Add a public ``add_x()`` method to the parent element class.c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   9_BaseChildElement._add_public_adder.<locals>.__annotate__W  s     	 	? 	r   c                B   < \        V SP                  4      pV! 4       pV# r;   )r   r	  )r   private_add_methodr  r2   s   &  r   	add_child6_BaseChildElement._add_public_adder.<locals>.add_childW  s#    !(d.C.C!D&(ELr   r  N)r   ra   r  _public_add_method_name)r2   r,  s   f r   _add_public_adder#_BaseChildElement._add_public_adderT  s@    	 	#%)%5%56 	 	477Cr   c                    V ^8  d   QhRRRR/# )r   namer-   methodzCallable[..., Any]r   )r   s   "r   r   r   b  s     1 1# 1/A 1r   c                n    \        V P                  V4      '       d   R# \        V P                  W4       R# )zZAdd `method` to the target class as `name`, unless `name` is already defined
on the class.N)hasattrr   r   )r2   r2  r3  s   &&&r   r  _BaseChildElement._add_to_classb  s*     4$$d++!!40r   c                   V ^8  d   QhRR/# )r   r(   z,Callable[[BaseOxmlElement], BaseOxmlElement]r   )r   s   "r   r   r   j  s     ! !F !r   c                *   a a ^ RI Ho R VV 3R llpV# )zHCallable that creates an empty element of the right type, with no attrs.)OxmlElementc                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   0_BaseChildElement._creator.<locals>.__annotate__n  s     	1 	1? 	1r   c                (   < S! SP                   4      # r;   r   )r   r9  r2   s   &r   new_child_element5_BaseChildElement._creator.<locals>.new_child_elementn  s    t//00r   )docx.oxml.parserr9  )r2   r>  r9  s   f @r   r  _BaseChildElement._creatori  s     	1	1 	1 ! r   c                J   a  R V 3R llpRS P                   ,          Vn        V# )zReturn a function object suitable for the "get" side of the property
descriptor.

This default getter returns the child element with matching tag name or |None|
if not present.
c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   /_BaseChildElement._getter.<locals>.__annotate__|  s     	2 	2? 	2r   c                L   < V P                  \        SP                  4      4      # r;   )findr   r   r   r2   s   &r   get_child_element4_BaseChildElement._getter.<locals>.get_child_element|  s    88Bt//011r   z0``<%s>`` child element or |None| if not present.r   ra   r2   rH  s   f r   r   _BaseChildElement._getters  s-    	2 	2 ?AQAQQ 	! ! r   c                	(    R V P                   ,          # )z
_insert_%sr#  r   s   &r   r  %_BaseChildElement._insert_method_name      doo--r   c                J   a  R V 3R llpRS P                   ,          Vn        V# )zSReturn a function object suitable for the "get" side of a list property
descriptor.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   4_BaseChildElement._list_getter.<locals>.__annotate__  s     	5 	5 	5r   c                L   < V P                  \        SP                  4      4      # r;   )findallr   r   rG  s   &r   get_child_element_list>_BaseChildElement._list_getter.<locals>.get_child_element_list  s    ;;r$"2"2344r   zPA list containing each of the ``<%s>`` child elements, in the order they appear.rJ  )r2   rU  s   f r   r  _BaseChildElement._list_getter  s0    
	5 	5 "&"2"23 	& &%r   c                (    RV P                   ,          # )zadd_childElement() is public API for a repeating element, allowing new
elements to be added to the sequence.

May be overridden to provide a friendlier API to clients having domain
appropriate parameter names for required attributes.
zadd_%sr#  r   s   &r   r.  )_BaseChildElement._public_add_method_name  s     $//))r   c                	(    R V P                   ,          # z
_remove_%sr#  r   s   &r   _remove_method_name%_BaseChildElement._remove_method_name  rO  r   c                	(    R V P                   ,          # )z_new_%sr#  r   s   &r   r   "_BaseChildElement._new_method_name  r%  r   )r   r   r   r   r   )r]   r^   r_   r`   ra   r{   rw   r
  r  r  r  r   r   r	  r/  r  r   r  r   r  r  r.  r\  r   re   r   r   s   @r   r   r     s    & &
$
>$;?D9 + +D1 ! ! ! !  . . & & * * . . + +r   r   c                  l    ] tR tRtRt]R 4       tR R ltR t]R 4       t	]
R 4       t]
R	 4       tR
tR# )Choicei  zVDefines a child element belonging to a group, only one of which may appear as a child.c                	    V P                   # r;   r=  r   s   &r   r   Choice.nsptagname  s    r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   rh   group_prop_namer-   r   r   r(   r   r   )r   s   "r   r   Choice.__annotate__  s2     , ,$, , $	,
 
,r   c                    Wn         W n        W0n        V P                  4        V P	                  4        V P                  4        V P                  4        V P                  4        R# r   )r   _group_prop_namer   r  r  r  r
  _add_get_or_change_to_method)r2   r   rf  r   s   &&&&r   rw   Choice.populate_class_members  sP     ( /%))+r   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )zRAdd a ``get_or_change_to_x()`` method to the element class for this child
element.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   9Choice._add_get_or_change_to_method.<locals>.__annotate__  s     	 	 	r   c                   < \        V SP                  4      pVe   V# \        V SP                  4      pV! 4        \        V SP                  4      pV! 4       pV# r;   )r   r   _remove_group_method_namer	  )r   r  remove_group_method
add_methodr2   s   &   r   get_or_change_to_childCChoice._add_get_or_change_to_method.<locals>.get_or_change_to_child  sU    C1E ")#t/M/M"N! d&;&;<JLELr   zFReturn the ``<%s>`` child, replacing any other group element if found.N)r   ra   r  _get_or_change_to_method_name)r2   rs  s   f r   rj  #Choice._add_get_or_change_to_method  s@    	 	 U*& 	4==?UVr   c                    RV P                   9   d#   V P                   P                  R4      ^,           M^ pV P                   VR # )zDProperty name computed from tag name, e.g. a:schemeClr -> schemeClr.r   N)r   index)r2   starts   & r   r   Choice._prop_name  sB     47$:J:J3J  &&s+a/PQ''r   c                	(    R V P                   ,          # )zget_or_change_to_%sr#  r   s   &r   ru  $Choice._get_or_change_to_method_name  s    $t66r   c                	(    R V P                   ,          # r[  )ri  r   s   &r   rp   Choice._remove_group_method_name  s    d3333r   )r   ri  r   N)r]   r^   r_   r`   ra   r   r   rw   rj  r   r   ru  rp  re   r   r   r   rb  rb    s^    `   ,"W& ( (
 7 7 4 4r   rb  c                  T   a  ] tR tRtRtR V 3R lltR V 3R llt]R 4       tRt	V ;t
# )	ro   i  z5Defines a required child element for MetaOxmlElement.c                   V ^8  d   QhRR/# )r   r   r-   r   )r   s   "r   r   OneAndOnlyOne.__annotate__  s     < <3 <r   c                	0   < \         \        V `  VR4       R # )Nr   )r   ro   r{   )r2   r   r   s   &&r   r{   OneAndOnlyOne.__init__  s    mT+J;r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r    s"      / c VZ r   c                N   < \         \        V `  W4       V P                  4        R# r   )r   ro   rw   r  r2   r   r   r   s   &&&r   rw   $OneAndOnlyOne.populate_class_members  s    mT9+Qr   c                J   a  R V 3R llpRS P                   ,          Vn        V# )PReturn a function object suitable for the "get" side of the property
descriptor.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   +OneAndOnlyOne._getter.<locals>.__annotate__  s     	 	? 	r   c                   < V P                  \        SP                  4      4      pVf   \        RSP                  ,          4      hV# )Nz+required ``<%s>`` child element not present)rF  r   r   r   r  s   & r   rH  0OneAndOnlyOne._getter.<locals>.get_child_element  sC    HHR 0 012E}%ADDTDTT  Lr   z Required ``<%s>`` child element.rJ  rK  s   f r   r   OneAndOnlyOne._getter  s*    
	 	 %GIYIY$Y!  r   r   )r]   r^   r_   r`   ra   r{   rw   r   r   re   r   r   s   @r   ro   ro     s.    ?< < 
 ! !r   ro   c                  2   a  ] tR tRtRtR V 3R lltRtV ;t# )rp   i  zUDefines a repeating child element for MetaOxmlElement that must appear at least
once.c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   OneOrMore.__annotate__  "     ( (/ (c (VZ (r   c                   < \         \        V `  W4       V P                  4        V P	                  4        V P                  4        V P                  4        V P                  4        \        W4       R# r   )	r   rp   rw   r   r  r  r
  r/  delattrr  s   &&&r   rw    OneOrMore.populate_class_members  sT    i5kM 'r   r   r]   r^   r_   r`   ra   rw   re   r   r   s   @r   rp   rp     s    ( (r   rp   c                  2   a  ] tR tRtRtR V 3R lltRtV ;t# )rs   i  z@Defines an optional repeating child element for MetaOxmlElement.c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   ZeroOrMore.__annotate__  r  r   c                   < \         \        V `  W4       V P                  4        V P	                  4        V P                  4        V P                  4        V P                  4        \        W4       R# r   )	r   rs   rw   r   r  r  r
  r/  r  r  s   &&&r   rw   !ZeroOrMore.populate_class_members  sT    j$6{N 'r   r   r  r   s   @r   rs   rs     s    J( (r   rs   c                  N   a  ] tR tRtRtR V 3R lltR tR t]R 4       t	Rt
V ;t# )	rt   i  z6Defines an optional child element for MetaOxmlElement.c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   ZeroOrOne.__annotate__  s"      / c VZ r   c                   < \         \        V `  W4       V P                  4        V P	                  4        V P                  4        V P                  4        V P                  4        V P                  4        R# r   )	r   rt   rw   r  r  r  r
  _add_get_or_adder_add_removerr  s   &&&r   rw    ZeroOrOne.populate_class_members  sX    i5kM r   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )zLAdd a ``get_or_add_x()`` method to the element class for this child
element.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   1ZeroOrOne._add_get_or_adder.<locals>.__annotate__-  s     	 	/ 	r   c                v   < \        V SP                  4      pVf   \        V SP                  4      pV! 4       pV# r;   )r   r   r	  )r   r  rr  r2   s   &  r   get_or_add_child5ZeroOrOne._add_get_or_adder.<locals>.get_or_add_child-  s6    C1E}$S$*?*?@
"Lr   z>Return the ``<%s>`` child element, newly added if not present.N)r   ra   r  _get_or_add_method_name)r2   r  s   f r   r  ZeroOrOne._add_get_or_adder)  s@    	 	 M$  	4779IJr   c                   a  R V 3R llpRS P                   ,          Vn        S P                  S P                  V4       R# )zIAdd a ``_remove_x()`` method to the element class for this child element.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   ,ZeroOrOne._add_remover.<locals>.__annotate__<  s     	- 	- 	-r   c                >   < V P                  SP                  4       R # r;   )
remove_allr   rG  s   &r   _remove_child-ZeroOrOne._add_remover.<locals>._remove_child<  s    NN4++,r   z#Remove all ``<%s>`` child elements.N)r   ra   r  r\  )r2   r  s   f r   r  ZeroOrOne._add_remover9  s9    	- 	- "G$JZJZ Z433]Cr   c                	(    R V P                   ,          # )zget_or_add_%sr#  r   s   &r   r  !ZeroOrOne._get_or_add_method_nameB  s    00r   r   )r]   r^   r_   r`   ra   rw   r  r  r   r  re   r   r   s   @r   rt   rt     s0    @ K D 1 1r   rt   c                  ~   a  ] tR tRtRtRR R lltR V 3R lltR tR t]	R	 4       t
]R
 4       t]R 4       tRtV ;t# )ru   iG  zaCorrespondes to an ``EG_*`` element group where at most one of its members may
appear as a child.c                    V ^8  d   QhRRRR/# )r   choiceszSequence[Choice]r   r   r   )r   s   "r   r   ZeroOrOneChoice.__annotate__K  s     & & 0 &o &r   c                	    Wn         W n        R # r;   _choicesr   )r2   r  r   s   &&&r   r{   ZeroOrOneChoice.__init__K  s    %r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r  O  s"     " "/ "c "VZ "r   c                   < \         \        V `  W4       V P                  4        V P                   F)  pVP                  WP
                  V P                  4       K+  	  V P                  4        R# r   )r   ru   rw   _add_choice_getterr  r   r   _add_group_remover)r2   r   r   choicer   s   &&& r   rw   &ZeroOrOneChoice.populate_class_membersO  sR    ot;KS!mmF))+HXHXY $!r   c                v    \        V P                  RR4      p\        V P                  V P                  V4       R# )zAdd a read-only ``{prop_name}`` property to the element class that returns
the present member of this group, or |None| if none are present.N)r   _choice_getterr   r   r   r   s   & r   r  "ZeroOrOneChoice._add_choice_getterW  s.     T00$=	!!4??I>r   c                `   a  R V 3R llpRVn         S P                  S P                  V4       R# )zKAdd a ``_remove_eg_x()`` method to the element class for this choice
group.c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   8ZeroOrOneChoice._add_group_remover.<locals>.__annotate__b  s     	( 	(o 	(r   c                P   < SP                    F  pV P                  V4       K  	  R # r;   )_member_nsptagnamesr  )r   tagnamer2   s   & r   _remove_choice_group@ZeroOrOneChoice._add_group_remover.<locals>._remove_choice_groupb  s    33w' 4r   z9Remove the current choice group child element if present.N)ra   r   _remove_choice_group_method_name)r2   r  s   f r   r  "ZeroOrOneChoice._add_group_remover^  s0    	( 	( (c$4@@BVWr   c                (   a  R V 3R llpRVn         V# )r  c                   V ^8  d   QhRR/# r(  r   )r   s   "r   r   4ZeroOrOneChoice._choice_getter.<locals>.__annotate__n  s     	G 	G/ 	Gr   c                8   < V P                   ! SP                  !  # r;   )first_child_found_inr  rG  s   &r   get_group_member_element@ZeroOrOneChoice._choice_getter.<locals>.get_group_member_elementn  s    ++T-E-EFFr   zbReturn the child element belonging to this element group, or |None| if no member child is present.)ra   )r2   r  s   f r   r  ZeroOrOneChoice._choice_getteri  s$    
	G 	G4 	!( ('r   c                V    V P                    Uu. uF  qP                  NK  	  up# u upi )zbSequence of namespace-prefixed tagnames, one for each of the member elements
of this choice group.)r  r   )r2   r  s   & r   r  #ZeroOrOneChoice._member_nsptagnamesw  s$     15>f!!>>>s   &c                	(    R V P                   ,          # r[  r#  r   s   &r   r  0ZeroOrOneChoice._remove_choice_group_method_name}  rO  r   r  r`  )r]   r^   r_   r`   ra   r{   rw   r  r  r   r  r   r  r  re   r   r   s   @r   ru   ru   G  s^    &" "?	X ( ( ? ?
 . .r   ru   c                     a  ] tR tRtRtR tR R ltR R ltR R	 lt]	R
 R l4       t
R V 3R llt]	R R l4       tRtV ;t# )r   i  znEffective base class for all custom element classes.

Adds standardized behavior to all classes in one place.
c                	h    R V P                   P                  V P                  \        V 4      3,          # )z<%s '<%s>' at 0x%0x>)r   r]   _nsptagidr   s   &r   __repr__BaseOxmlElement.__repr__  s/    %NN##LLtH)
 
 	
r   c                    V ^8  d   QhRRRR/# )r   tagnamesr-   r(   z_Element | Noner   )r   s   "r   r   BaseOxmlElement.__annotate__  s      c o r   c                \    V F%  pV P                  \        V4      4      pVf   K#  Vu # 	  R# )z9First child with tag in `tagnames`, or None if not found.N)rF  r   )r2   r  r  r  s   &*  r   r  $BaseOxmlElement.first_child_found_in  s.    GIIbk*E    r   c                    V ^8  d   QhRRRR/# )r   elmr
   r  r-   r   )r   s   "r   r   r    s        r   c                	v    V P                   ! V!  pVe   VP                  V4       V# V P                  V4       V# r;   )r  addpreviousappend)r2   r  r  	successors   &&* r   r  %BaseOxmlElement.insert_element_before  s@    --x8	 !!#& 
 KK
r   c                    V ^8  d   QhRRRR/# )r   r  r-   r(   r   r   )r   s   "r   r   r    s     # #C #D #r   c                    V F7  pV P                  \        V4      4      pV F  pV P                  V4       K  	  K9  	  R# )z>Remove child elements with tagname (e.g. "a:p") in `tagnames`.N)rT  r   remove)r2   r  r  matchingr  s   &*   r   r  BaseOxmlElement.remove_all  s4    G||BwK0H!E" "  r   c                   V ^8  d   QhRR/# r   r(   r-   r   )r   s   "r   r   r    s     + +S +r   c                    \        V 4      # )zXML string for this element, suitable for testing purposes.

Pretty printed for readability and without an XML declaration at the top.
)r"   r   s   &r   r!   BaseOxmlElement.xml  s     %T**r   c                    V ^8  d   QhRRRR/# )r   	xpath_strr-   r(   r   r   )r   s   "r   r   r    s     : :s :s :r   c                .   < \         SV `  V\        R7      # )z}Override of `lxml` _Element.xpath() method.

Provides standard Open XML namespace mapping (`nsmap`) in centralized location.
)
namespaces)r   xpathr   )r2   r  r   s   &&r   r  BaseOxmlElement.xpath  s    
 w}Y5}99r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r    s     > > >r   c                	B    \         P                  ! V P                  4      # r;   )r   from_clark_namer   r   s   &r   r  BaseOxmlElement._nsptag  s    #33DHH==r   r   )r]   r^   r_   r`   ra   r  r  r  r  r   r!   r  r  re   r   r   s   @r   r   r     sN    

# + +: : > >r   r   )	metaclass)-ra   
__future__r   rb   typingr   r   r   r   r   r   lxmlr	   
lxml.etreer
   r   docx.oxml.exceptionsr   docx.oxml.nsr   r   r   docx.sharedr   docx.enum.baser   docx.oxml.simpletypesr   r"   r-   r    rf   typerh   r~   rq   rr   r   rb  ro   rp   rs   rt   ru   r   r   r   r   <module>r     s    F " 	 H H  , 0 8 8 $*48) 8)v T]7d 7$(< (<V< <~, ,^^+ ^+B74 74t!% !8(! ((" ((1! (1V8.' 8.x5>e''? 5>r   