+
    Z‹i'"  ã                  ó¶   € R t ^ RIHt ^RIHt ^RIHt ^ RIHu H	t ^ RI
t
^ RIHtHtHt ]'       d   ^RIHt ^ t^t^t ! R R]4      t ! R	 R
]4      tR tR# )z‡
Adds parsing of tables to Python-Markdown.

See the [documentation](https://Python-Markdown.github.io/extensions/tables)
for details.
)Úannotations)Ú	Extension)ÚBlockProcessorN)ÚTYPE_CHECKINGÚAnyÚSequence)Úblockparserc                  óÂ   a € ] tR t^&tRt]P                  ! R4      t]P                  ! R4      tR V 3R llt	R R lt
R R	 ltR
 R ltR R ltR R ltR R ltRtV ;t# )ÚTableProcessorzProcess Tables. z"(?:(\\\\)|(\\`+)|(`+)|(\\\|)|(\|))z(?<!\\)(?:\\\\)*\|$c               ó    € V ^8„  d   QhRRRR/# )é   Úparserzblockparser.BlockParserÚconfigzdict[str, Any]© )Úformats   "Ú</usr/lib/python3/dist-packages/markdown/extensions/tables.pyÚ__annotate__ÚTableProcessor.__annotate__,   s   € ÷ !ñ !Ð6ð !Àñ !ó    c                	óN   <€ R V n         RV n        W n        \        SV `  V4       R# )FÚ N)ÚborderÚ	separatorr   ÚsuperÚ__init__)Úselfr   r   Ú	__class__s   &&&€r   r   ÚTableProcessor.__init__,   s#   ø€ Ø"'ˆŒØ(*ˆŒØŒä‰Ñ˜Ö r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úparentúetree.ElementÚblockÚstrÚreturnÚboolr   )r   s   "r   r   r   3   s!   € ÷ "ñ "˜=ð "°ð "¸ñ "r   c                ó¾  € RpVP                  R4       Uu. uF  qDP                  R4      NK  	  pp\        V4      ^8”  Ed—   V^ ,          p\        V n        VP                  R4      '       d   V ;P                  \        ,          un        V P                  P                  V4      e   V ;P                  \        ,          un        V P                  V4      p\        V4      pV^8„  pV'       g‚   V^8X  d{   V P                  '       di   \        ^\        V4      4       FO  pWX,          P                  R4      pV'       g$   V P                  P                  WX,          4      RJpV'       d   KO   M	  V'       dc   V P                  V^,          4      p\        V4      V8H  ;'       d'    \        RP                  V4      4      \        R4      8*  pV'       d   W@n        V# u upi )z‘
Ensure first two rows (column header and separator row) are valid table rows.

Keep border check and separator row do avoid repeating the work.
FÚ
Ú Ú|Nr   z|:- )ÚsplitÚstripÚlenÚ	PIPE_NONEr   Ú
startswithÚ	PIPE_LEFTÚRE_END_BORDERÚsearchÚ
PIPE_RIGHTÚ
_split_rowÚrangeÚsetÚjoinr   )	r   r   r!   Úis_tableÚrowÚrowsÚheader0Úrow0_lenÚindexs	   &&&      r   ÚtestÚTableProcessor.test3   se  € ð ˆØ*/¯+©+°dÔ*;Ó<Ñ*; 3—	‘	˜#–Ñ*;ˆÐ<Üˆt‹9�q�=Ø˜1•gˆGÜ#ˆDŒKØ×!Ñ! #×&Ò&Ø—’œyÕ(•Ø×!Ñ!×(Ñ(¨Ó1Ò=Ø—’œzÕ)•Ø—/‘/ 'Ó*ˆCÜ˜3“xˆHØ !‘|ˆH÷  ¨A¤°$·+·+°+Ü" 1¤c¨$£iÖ0�EØ#�{×5Ñ5°cÓ:�Hß#Ø#'×#5Ñ#5×#<Ñ#<¸T½[Ó#IÐQUÐ#U˜ß#™8Ùñ 1÷ Ø—o‘o d¨1¥gÓ.�Ü ›H¨Ñ0×VÐV´c¸"¿'¹'À#»,Ó6GÌ3ÈvË;Ñ6V�ßØ%(”Nàˆùò7 =s   –Gc               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r    Úblocksú	list[str]r#   ÚNoner   )r   s   "r   r   r   W   s!   € ÷ >ñ >˜-ð >°ð >¸tñ >r   c                óŒ  € VP                  ^ 4      P                  R4      pV^ ,          P                  R4      p\        V4      ^8  d   . MVR,          p. pV P                   Fº  pVP                  R4      pVP                  R4      '       d+   VP                  R4      '       d   VP                  R4       KU  VP                  R4      '       d   VP                  R4       K  VP                  R4      '       d   VP                  R4       K©  VP                  R4       K¼  	  \        P                  ! VR	4      p\        P                  ! VR
4      p	V P                  WIV4       \        P                  ! VR4      p
\        V4      ^ 8X  d   V P                  W¦4       R# V F$  pV P                  VP                  R4      W¦4       K&  	  R# )z%Parse a table block and build table. r&   r'   :r   NNÚ:ÚcenterÚleftÚrightNÚtableÚtheadÚtbody)Úpopr)   r*   r+   r   r-   ÚendswithÚappendÚetreeÚ
SubElementÚ
_build_rowÚ_build_empty_row)r   r   r?   r!   Úheaderr8   ÚalignÚcrG   rH   rI   r7   s   &&&         r   ÚrunÚTableProcessor.runW   sI  € à—
‘
˜1“×#Ñ# DÓ)ˆØ�q•—‘ Ó$ˆÜ˜“Z !”^‰r¨¨r­ˆð #%ˆØ—”ˆAØ—‘˜“ˆAØ�|‰|˜C× Ò  Q§Z¡Z°§_¢_Ø—‘˜XÖ&Ø—‘˜c×"Ò"Ø—‘˜VÖ$Ø—‘˜C—’Ø—‘˜WÖ%à—‘˜TÖ"ñ  ô × Ò  ¨Ó1ˆÜ× Ò  ¨Ó0ˆØ�‰˜ uÔ-Ü× Ò  ¨Ó0ˆÜˆt‹9˜Œ>à×!Ñ! %Ö/ã�Ø—‘ §	¡	¨#£°Ö=ó r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r    rR   úSequence[str | None]r#   rA   r   )r   s   "r   r   r   v   s#   € ÷ ñ  }ð Ð=Qð ÐVZñ r   c                óž   € \         P                  ! VR4      p\        V4      pV'       d#   \         P                  ! VR4       V^,          pK*  R# )zBuild an empty row.ÚtrÚtdN)rM   rN   r+   )r   r   rR   rY   Úcounts   &&&  r   rP   ÚTableProcessor._build_empty_rowv   s>   € ä×Ò˜f dÓ+ˆÜ�E“
ˆßÜ×Ò˜R Ô&Ø�Q�JŠEñ r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r7   r"   r   r    rR   rW   r#   rA   r   )r   s   "r   r   r   ~   s*   € ÷ 8ñ 8˜cð 8¨=ð 8ÐAUð 8ÐZ^ñ 8r   c                óØ  € \         P                  ! VR4      pRpVP                  R8X  d   RpV P                  V4      p\	        V4       F…  w  rx\         P                  ! WE4      p	 Wg,          P                  R4      V	n        V'       g   KB  V P                  R,          '       d   V	P                  RV4       Ko  V	P                  R	R
V R24       K‡  	  R#   \         d    RT	n         Lgi ; i)z(Given a row of text, build table cells. rY   rZ   rH   Úthr'   r   Úuse_align_attributerR   Ústyleztext-align: Ú;N)
rM   rN   Útagr2   Ú	enumerater*   ÚtextÚ
IndexErrorr   r4   )
r   r7   r   rR   rY   rc   ÚcellsÚiÚarS   s
   &&&&      r   rO   ÚTableProcessor._build_row~   sÆ   € ä×Ò˜f dÓ+ˆØˆØ�:‰:˜Ô ØˆCØ—‘ Ó$ˆô ˜eÖ$‰DˆAÜ× Ò  Ó)ˆAðØ�Ÿ™¨Ó,�”÷ ‰qØ—;‘;Ð4×5Ô5Ø—E‘E˜' 1Ö%à—E‘E˜' \°!°°AÐ#6Ö7ó %øô ô Ø�–ðús   Á%CÃC)Ã(C)c               ó    € V ^8„  d   QhRRRR/# ©r   r7   r"   r#   r@   r   )r   s   "r   r   r   “   s   € ÷  ñ  ˜cð   iñ  r   c                óÀ   € V P                   '       d=   VP                  R4      '       d
   VR,          pV P                  P                  RV4      pV P	                  V4      # )z(split a row of text into list of cells. r(   :é   NNr   )r   r-   r/   ÚsubÚ_split)r   r7   s   &&r   r2   ÚTableProcessor._split_row“   sJ   € à�;�;ˆ;Ø�~‰~˜c×"Ò"Ø˜"•g�Ø×$Ñ$×(Ñ(¨¨SÓ1ˆCØ�{‰{˜3ÓÐr   c               ó    € V ^8„  d   QhRRRR/# rl   r   )r   s   "r   r   r   ›   s   € ÷ Fñ F˜#ð F )ñ Fr   c                óŽ  € . p. p. p. p. p. pV P                   P                  V4       EF<  pVP                  ^4      '       dl   VP                  \	        VP                  ^4      4      ^,
          4       VP                  VP                  ^4      VP                  ^4      ^,
          ^34       K†  VP                  ^4      '       df   VP                  \	        VP                  ^4      4      4       VP                  VP                  ^4      VP                  ^4      ^,
          ^ 34       EK  VP                  ^4      '       g   EK  VP                  VP                  ^4      4       EK?  	  ^ p	\	        V4      p
Wš8  d‘    WI,          WY,          ^,          ,
          pV^ 8X  d   \        hWI^,           R P                  V4      ^,           pVP                  WY,          ^ ,          WYV,           ,          ^,          34       Wœ^,           ,          p	K–  V F]  pRpV F7  pWß^ ,          8  d    M)V^ ,          Tu;8:  d   V^,          8:  g   K1  M K5  Rp M	  V'       d   KL  VP                  V4       K_  	  ^ p	V F  pVP                  WV 4       V^,           p	K!  	  VP                  WR 4       V#   \         d    T	^,          p	 EKM  i ; i)z9split a row of text with some code into a list of cells. NFT)	ÚRE_CODE_PIPESÚfinditerÚgrouprL   r+   ÚstartÚendÚ
ValueErrorr;   )r   r7   ÚelementsÚpipesÚticsÚ
tic_pointsÚ
tic_regionÚ
good_pipesÚmÚposÚtic_lenÚtic_sizer;   ÚpipeÚ	throw_outÚregions   &&              r   rp   ÚTableProcessor._split›   sD  € àˆØˆØˆØˆ
Øˆ
Øˆ
ð ×#Ñ#×,Ñ,¨S×1ˆAà�w‰w�q�zŠzð —‘œC §¡¨£
›O¨aÕ/Ô0à×!Ñ! 1§7¡7¨1£:¨q¯u©u°Q«x¸!­|¸QÐ"?Ö@Ø—‘˜—’ð —‘œC §¡¨£
›OÔ,à×!Ñ! 1§7¡7¨1£:¨q¯u©u°Q«x¸!­|¸QÐ"?×@à—‘˜—•Ø—‘˜QŸW™W Q›Z×(ñ! 2ð, ˆÜ�d“)ˆØŒmðØ�9 z¥°qÕ'9Õ9�Ø˜q”=Ü$Ð$Ø 1�W˜X˜×,Ñ,¨XÓ6¸Õ:�Ø×!Ñ! :¥?°1Õ#5°zÈÅ+Õ7NÈqÕ7QÐ"RÔSØ˜q•yÕ ’ó ˆDØˆIÛ$�Ø �)Ô#áØ˜A•Y $Ö3¨&°­)×3Ò3à $�IÙñ %÷ ‘9Ø×!Ñ! $Ö'ñ ð ˆÛˆDØ�O‰O˜C D˜MÔ*Ø˜•(ŠCñ ð 	�‰˜˜D˜	Ô"Øˆøô7 ô Ø�q•”ðús   Å=BJ+ Ê+KËK)r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚreÚcompilert   r/   r   r<   rT   rP   rO   r2   rp   Ú__static_attributes__Ú__classcell__©r   s   @r   r
   r
   &   sT   ø† Ùà—J’JÐDÓE€MØ—J’JÐ5Ó6€M÷!ð !õ"õH>õ>õ8õ* ÷Fó Fr   r
   c                  ó2   a € ] tR t^ätRtV 3R ltR tRtV ;t# )ÚTableExtensionzAdd tables to Markdown. c                	ó@   <€ R RR./V n          \        SV `  ! R/ VB  R# )r`   Fz-True to use align attribute instead of style.Nr   )r   r   r   )r   Úkwargsr   s   &,€r   r   ÚTableExtension.__init__ç   s,   ø€ à! EÐ+ZÐ#[ð
ˆŒð 	/ä‰ÒÑ"˜6Ô"r   c                óô   € RVP                   9  d   VP                   P                  R4       \        VP                  V P	                  4       4      pVP                  P
                  P                  VR^K4       R# )z6Add an instance of `TableProcessor` to `BlockParser`. r(   rG   N)ÚESCAPED_CHARSrL   r
   r   Ú
getConfigsÚblockprocessorsÚregister)r   ÚmdÚ	processors   && r   ÚextendMarkdownÚTableExtension.extendMarkdownï   sW   € à�b×&Ñ&Ô&Ø×Ñ×#Ñ# CÔ(Ü" 2§9¡9¨d¯o©oÓ.?Ó@ˆ	Ø
�	‰	×!Ñ!×*Ñ*¨9°g¸rÖBr   )r   )	rˆ   r‰   rŠ   r‹   rŒ   r   rž   r�   r�   r‘   s   @r   r“   r“   ä   s   ø† Ù#õ#÷Cð Cr   r“   c                 ó   € \        R/ V B # )Nr   )r“   )r•   s   ,r   ÚmakeExtensionr¡   ÷   s   € ÜÑ#˜FÑ#Ð#r   )rŒ   Ú
__future__r   r   r   rš   r   Úxml.etree.ElementTreerM   ÚElementTreer�   Útypingr   r   r   r   r,   r.   r1   r
   r“   r¡   r   r   r   Ú<module>r¦      s[   ðñõ #å Ý ,ß %Ð %Û 	ß /Ñ /çÝà€	Ø€	Ø€
ô{�^ô {ô|C�Yô Cô&$r   