+
    œ°³j  ã                   ó¤   € R t ^ RIt^RIHtHt ^RIHtHtHt ]! 4       '       d   ^ RI	t	^ RI	H
t
 ]P                  ! ]4      t ! R R]4      tR.tR# )z'
Feature extractor class for MarkupLM.
N)ÚBatchFeatureÚFeatureExtractionMixin)Úis_bs4_availableÚloggingÚrequires_backends)ÚBeautifulSoupc                   óZ   a a€ ] tR t^ t oRtV 3R ltR tR tR tV3R lR lt	Rt
VtV ;t# )	ÚMarkupLMFeatureExtractora[  
Constructs a MarkupLM feature extractor. This can be used to get a list of nodes and corresponding xpaths from HTML
strings.

This feature extractor inherits from [`~feature_extraction_utils.PreTrainedFeatureExtractor`] which contains most
of the main methods. Users should refer to this superclass for more information regarding those methods.

c                óB   <€ \        V R .4       \        SV `  ! R/ VB  R# )Úbs4N© )r   ÚsuperÚ__init__)ÚselfÚkwargsÚ	__class__s   &,€Úy/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/markuplm/feature_extraction_markuplm.pyr   Ú!MarkupLMFeatureExtractor.__init__*   s   ø€ Ü˜$  Ô(Ü‰ÒÑ"˜6Ô"ó    c           
     ó¬  a€ . p. pVP                   '       d   TMVP                  oSP                   F}  pVP                  SP                   R R7      pVP	                  SP                   4       TP	                  \        V4      ^8X  d   ^ M\        V3R l\        V^4       4       4      4       VoK  	  VP                  4        VP                  4        W#3# )F)Ú	recursivec              3   ó<   <"  € T F  w  rVSJ g   K  Vx € K  	  R # 5i)Nr   )Ú.0ÚiÚsÚchilds   &  €r   Ú	<genexpr>Ú6MarkupLMFeatureExtractor.xpath_soup.<locals>.<genexpr>6   s    øé € Ð1eÑ@V¹¸ÐZ[Ð_dÐZd·!²!Ó@Vùs   ƒ
’
)	ÚnameÚparentÚparentsÚfind_allÚappendÚlenÚnextÚ	enumerateÚreverse)r   ÚelementÚ
xpath_tagsÚxpath_subscriptsr   Úsiblingsr   s   &&    @r   Ú
xpath_soupÚ#MarkupLMFeatureExtractor.xpath_soup.   s²   ø€ Øˆ
ØÐØ"Ÿ<Ÿ<˜<‘¨W¯^©^ˆØ—m”mˆFØ—‘ u§z¡z¸U�ÓCˆHØ×Ñ˜eŸj™jÔ)Ø×#Ñ#Ü˜“] aÔ'‘¬TÔ1eÄ	È(ÐTUÔ@VÓ1eÓ-eôð ŠEñ $ð 	×ÑÔØ× Ñ Ô"ØÐ+Ð+r   c                óŠ  € \        VR 4      p. p. p. pVP                   FÖ  p\        V\        P                  P
                  4      '       g   K/  \        VP                  4      \        P                  P                  Jd   Kb  \        P                  ! V4      P                  4       pV'       g   K�  VP                  V4       V P                  V4      w  r‰VP                  V4       VP                  V	4       KØ  	  \        V4      \        V4      8w  d   \        R4      h\        V4      \        V4      8w  d   \        R4      hW4V3# )zhtml.parserz3Number of doc strings and xtags does not correspondz3Number of doc strings and xsubs does not correspond)r   ÚdescendantsÚ
isinstancer   r'   ÚNavigableStringÚtyper   ÚTagÚhtmlÚunescapeÚstripr"   r+   r#   Ú
ValueError)
r   Úhtml_stringÚ	html_codeÚall_doc_stringsÚstring2xtag_seqÚstring2xsubs_seqr'   Útext_in_this_tagr(   r)   s
   &&        r   Úget_three_from_singleÚ.MarkupLMFeatureExtractor.get_three_from_single=   s  € Ü! +¨}Ó=ˆ	àˆØˆØÐà ×,Ô,ˆGÜ˜'¤3§;¡;×#>Ñ#>×?Ô?Ü˜Ÿ™Ó'¬s¯{©{¯©Ó>Ùä#'§=¢=°Ó#9×#?Ñ#?Ó#AÐ ß'Ùà×&Ñ&Ð'7Ô8à/3¯©¸wÓ/GÑ,�
Ø×&Ñ& zÔ2Ø ×'Ñ'Ð(8Ö9ñ -ô ˆÓ¤3 Ó#7Ô7ÜÐRÓSÐSÜˆÓ¤3Ð'7Ó#8Ô8ÜÐRÓSÐSàÐ1AÐAÐAr   c                óv   € R p\        W4       F'  w  rEVRV 2,          pV^ 8w  g   K  VRV R2,          pK)  	  V# )Ú Ú/Ú[Ú])Úzip)r   r(   r)   ÚxpathÚtagnameÚsubss   &&&   r   Úconstruct_xpathÚ(MarkupLMFeatureExtractor.construct_xpathZ   sH   € ØˆÜ  Ö>‰MˆGØ�q˜˜	�]Õ"ˆEØ�qŽyØ˜1˜T˜F !˜Õ$’ñ ?ð ˆr   c                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)r   )ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú%MarkupLMFeatureExtractor.__annotate__b   s   ø€ ÷ Tñ T©ñ Tr   c                ó²  € Rp\        V\        4      '       d   RpMK\        V\        \        34      '       d0   \	        V4      ^ 8X  g   \        V^ ,          \        4      '       d   RpV'       g   \        R\        V4       R24      h\        V\        \        34      ;'       d    \        V^ ,          \        4      pV'       g   V.p. p. pV Fs  pV P                  V4      w  rxp	VP                  V4       . p
\        WxV	4       F(  w  r¼pV P                  WÍ4      pV
P                  V4       K*  	  VP                  V
4       Ku  	  RVRV/p\        VRR7      pV# )	ad  
Main method to prepare for the model one or several HTML strings.

Args:
    html_strings (`str`, `list[str]`):
        The HTML string or batch of HTML strings from which to extract nodes and corresponding xpaths.

Returns:
    [`BatchFeature`]: A [`BatchFeature`] with the following fields:

    - **nodes** -- Nodes.
    - **xpaths** -- Corresponding xpaths.

Examples:

```python
>>> from transformers import MarkupLMFeatureExtractor

>>> page_name_1 = "page1.html"
>>> page_name_2 = "page2.html"
>>> page_name_3 = "page3.html"

>>> with open(page_name_1) as f:
...     single_html_string = f.read()

>>> feature_extractor = MarkupLMFeatureExtractor()

>>> # single example
>>> encoding = feature_extractor(single_html_string)
>>> print(encoding.keys())
>>> # dict_keys(['nodes', 'xpaths'])

>>> # batched example

>>> multi_html_strings = []

>>> with open(page_name_2) as f:
...     multi_html_strings.append(f.read())
>>> with open(page_name_3) as f:
...     multi_html_strings.append(f.read())

>>> encoding = feature_extractor(multi_html_strings)
>>> print(encoding.keys())
>>> # dict_keys(['nodes', 'xpaths'])
```FTzQHTML strings must of type `str`, `list[str]` (batch of examples), but is of type Ú.ÚnodesÚxpathsN)ÚdataÚtensor_type)r/   ÚstrÚlistÚtupler#   r6   r1   r=   r"   rD   rH   r   )r   Úhtml_stringsÚvalid_stringsÚ
is_batchedrS   rT   r7   r9   r:   r;   Úxpath_stringsÚnodeÚtag_listÚsub_listÚxpath_stringrU   Úencoded_inputss   &&               r   Ú__call__Ú!MarkupLMFeatureExtractor.__call__b   sM  € ð` ˆô �l¤C×(Ò(Ø ‰MÜ˜¤t¬U m×4Ò4Ü�<Ó  AÔ%¬°LÀµOÄS×)IÒ)IØ $�çÜð"Ü"& |Ó"4Ð!5°Qð8óð ô
   ¬t´U¨mÓ<×cÐcÄ*È\ÐZ[Í_Ô^aÓBbˆ
çØ(˜>ˆLð ˆØˆÛ'ˆKØAE×A[ÑA[Ð\gÓAhÑ>ˆOÐ.>Ø�L‰L˜Ô)ØˆMÜ,/°ÐRbÖ,cÑ(� Ø#×3Ñ3°HÓG�Ø×$Ñ$ \Ö2ñ -dð �M‰M˜-Ö(ñ (ð ˜ ¨&Ð1ˆÜ%¨4¸TÔBˆàÐr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   r=   rH   rc   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   rN   s   @@r   r	   r	       s1   ù‡ € ñõ#ò,òBò:÷T÷ Tð Tr   r	   )ri   r3   Úfeature_extraction_utilsr   r   Úutilsr   r   r   r   r   Ú
get_loggerre   Úloggerr	   Ú__all__r   r   r   Ú<module>rr      sU   ðñó ç Lß AÑ Añ ×ÒÛÝ!ð 
×	Ò	˜HÓ	%€ôVÐ5ô Vðr &Ð
&‚r   