+
    œ°³j|.  ã                   óþ   € ^ RI t ^ RIHt ^ RIt^ RIHt ^RIHt ^RI	H
t
 ^RIHtHt ^RIHtHtHt ^RIHtHt ^R	IHtHt ^R
IHtHt ^RIHt  ! R R]RR7      tR R ltR R lt] ! R R]4      4       t R.t!R# )é    N)Ú	Annotated)Ú
functional)ÚTorchvisionBackend)ÚBatchFeature)Úgroup_images_by_shapeÚreorder_images)Ú
ImageInputÚPILImageResamplingÚSizeDict)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚauto_docstring)ÚIMAGENET_STANDARD_MEANÚIMAGENET_STANDARD_STD)Úpositive_intc                   ó0   a € ] tR t^%t o RtV 3R ltRtV tR# )ÚNeoMMEImageProcessorKwargszú
patch_size (`int`, *optional*, defaults to `self.patch_size`):
    Side, in pixels, of one patch token. The image is padded to a whole multiple of it.
max_side (`int`, *optional*):
    Longest-side cap in pixels. Unset means no longest-side resize.
c                ó€   <€ V ^8„  d   Qh/ S[ S[S[! 4       3,          ;R&   S[ S[R,          S[! 4       3,          ;R&   # )é   Ú
patch_sizeNÚmax_side)r   Úintr   )ÚformatÚ__classdict__s   "€Ús/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/neomme/image_processing_neomme.pyÚ__annotate__Ú'NeoMMEImageProcessorKwargs.__annotate__%   s;   ø‡ ‚ ñ ™#š|›~Ð-Õ.Ñ.ñ ñ ™˜d�
¢L£NÐ2Õ3Ñ3ò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   %   s   ø‡ € ñ÷ ƒ r   r   F)Útotalc                ó,   € V ^8„  d   QhRRR\         RR/# )r   Úimagesútorch.Tensorr   Úreturn©r   )r   s   "r   r   r   1   s!   € ÷ ñ  ^ð Äð Èñ r   c                óÈ   € V P                   w  r#rEWA,          pWQ,          pV P                  W#WaWq4      pVP                  ^ ^^^^^4      pVP                  W&V,          R4      pV# )z¿
Convert 3D array image of shape (image_height, image_width, num_channels) into 2D array of patches of shape
(num_patches_height * num_patches_width, patch_size * patch_size * num_channels).
éÿÿÿÿ)ÚshapeÚreshapeÚpermute)	r+   r   Ú
batch_sizeÚnum_channelsÚimage_heightÚimage_widthÚnum_patches_heightÚnum_patches_widthÚpatched_images	   &&       r   Úconvert_image_to_patchesr;   1   sw   € ð
 ;A¿,¹,Ñ7€J˜lØ%Õ3ÐØ#Õ1ÐØ—N‘NØÐ"4ÐBSó€Mð "×)Ñ)¨!¨Q°°1°a¸Ó;€MØ!×)Ñ)¨*ÐK\Õ6\Ð^`Óa€MØÐr   c                ó’   € V ^8„  d   QhR\         R\         R\         R,          R\        R,          R\        \         \         3,          /# )r   ÚheightÚwidthr   NÚsizer-   )r   r   Útuple)r   s   "r   r   r   A   sG   € ÷ &)ñ &)¤3ð &)¬sð &)¼cÀD½jð &)ÔPXÐ[_ÕP_ð &)ÔdiÔjmÔorÐjrÕdsñ &)r   c                ó¤  € Ve   VP                   MRpVe   VP                  MRpVe$   W,          V8  d   W@V,          ,          R,          MRpVe   \        Wb\        W4      ,          4      pVe    \        WeW,          ,          R,          4      pVR8X  d   W3# \        ^\	        W,          4      4      p\        ^\	        W,          4      4      pVRJ;'       d    \        Wx4      V8„  ;'       g    VRJ;'       d    Wx,          V8„  p	V	'       dŽ   \        ^\
        P                  ! W,          4      4      p\        ^\
        P                  ! W,          4      4      pVe;   Wx,          V8”  d.   Wx8¼  d   \        ^WX,          4      pWx3# \        ^WW,          4      pWx3# Ve®   W,          V8  d¡   Wx,          V8¼  d   Wx3# \        ^\
        P                  ! W,          4      4      p
\        ^\
        P                  ! W,          4      4      pVRJ;'       d    \        W«4      V8„  ;'       g    VRJ;'       d    W«,          V8„  p	V	'       g   W«3# Wx3# )zHCompute integer height and width from the configured image size targets.Ng      à?g      ð?)Ú
min_pixelsÚ
max_pixelsÚminÚmaxÚroundÚmathÚfloorÚceil)r=   r>   r   r?   rB   rC   ÚscaleÚresized_heightÚresized_widthÚexceeds_capÚceiled_heightÚceiled_widths   &&&&        r   Úget_resize_output_sizerP   A   s  € à$(Ò$4�—’¸$€JØ$(Ò$4�—’¸$€JØ6@Ò6LÐQWÕQ_ÐblÔQlˆZ E�>Õ*¨sÖ2Ðru€EØÒÜ�E¤c¨&Ó&8Õ8Ó9ˆØÒÜ�E¨&­.Õ9¸cÕAÓBˆØ�„|Øˆ}Ðä˜œE &¥.Ó1Ó2€NÜ˜œ5 ¥Ó/Ó0€MØ 4Ð'×YÐY¬C°Ó,NÐQYÑ,Y÷ ð Ø˜$Ð×NÐN >Õ#AÀJÑ#Nð ÷ Ü˜Q¤§
¢
¨6­>Ó :Ó;ˆÜ˜AœtŸzšz¨%­-Ó8Ó9ˆØÒ! nÕ&DÀzÔ&QØÔ.Ü!$ Q¨
Õ(CÓ!D�ð Ð,Ð,ô !$ A zÕ'CÓ D�ØÐ,Ð,àÒ &¥.°:Ô"=ØÕ)¨ZÔ7Ø!Ð0Ð0Ü˜AœtŸyšy¨­Ó8Ó9ˆÜ˜1œdŸiši¨­Ó6Ó7ˆØ tÐ+×[Ð[´°MÓ0PÐS[Ñ0[÷ 
ð 
Ø˜dÐ"×PÐP }Õ'CÀjÑ'Pð 	÷ Ø Ð.Ð.àÐ(Ð(r   c                   ó  a a€ ] tR t^jt oRt]t]P                  t	]
t]tRtRtRtRtRt^ tRtRtRR.tV3R lV 3R llt]V3R lV 3R	 ll4       tV3R
 lV 3R lltV3R lR ltV3R lR ltV3R lR ltRV3R lR lltRtVt V ;t!# )ÚNeoMMEImageProcessora{  
Constructs an image processor for NeoMME.

The processor converts each image to RGB and splits it into row-major patches. It preserves the original size by
default, but `max_side` or a pixel-area `size` can resize images. It pads the bottom and right edges to complete
the final patch. A batch returns one concatenated patch tensor and one grid height and width pair per image.
TNÚpixel_valuesÚimage_grid_hwc                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úkwargs)r   r   )r   r   s   "€r   r   Ú!NeoMMEImageProcessor.__annotate__…   s   ø€ ÷ #ñ #¡Ñ(BÕ!Cñ #r   c                ó(   <€ \         SV `  ! R/ VB  R # )Nr    )ÚsuperÚ__init__)ÚselfrV   Ú	__class__s   &,€r   rZ   ÚNeoMMEImageProcessor.__init__…   s   ø€ Ü‰ÒÑ"˜6Ô"r   c                ó<   <€ V ^8„  d   QhRS[ RS[S[,          RS[/# )r   r+   rV   r-   )r	   r   r   r   )r   r   s   "€r   r   rW   ‰   s)   ø€ ÷ 4ñ 4¡ð 4±vÑ>XÕ7Yð 4Ñ^jñ 4r   c                ó&   <€ \         SV `  ! V3/ VB # )zÞ
Returns:
    [`BatchFeature`] with `pixel_values` of shape `(total_patches, 3 * patch_size ** 2)` and
    `image_grid_hw` of shape `(batch_size, 2)`. `pixel_values` concatenates patches from every image in the
    batch.
)rY   Ú
preprocess)r[   r+   rV   r\   s   &&,€r   r`   ÚNeoMMEImageProcessor.preprocessˆ   s   ø€ ô ‰wÒ! &Ñ3¨FÑ3Ð3r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r-   )r@   )r   r   s   "€r   r   rW   ’   s   ø€ ÷ =ñ =±uñ =r   c                óÄ   <€ VR ,          pVe'   \        \        V4      4      RR08w  d   \        R4      hVR ,          f   VP                  RR4       \        SV `  ! R/ VB # )r?   NrB   rC   z4size must contain exactly min_pixels and max_pixels.Ú	do_resizer    )ÚsetÚdictÚ
ValueErrorÚpoprY   Ú_validate_preprocess_kwargs)r[   rV   r?   r\   s   &, €r   ri   Ú0NeoMMEImageProcessor._validate_preprocess_kwargs’   s]   ø€ Ø�f�~ˆØÒ¤¤D¨£J£°LÀ,Ð3OÔ OÜÐSÓTÐTà�&�>Ò!à�J‰J�{ DÔ)Ü‰wÒ2Ñ<°VÑ<Ð<r   c          
      óN   <€ V ^8„  d   QhRRRS[ R,          RS[R,          RRRR/# )	r   Úimager,   r   Nr?   Úresampleú7PILImageResampling | tvF.InterpolationMode | int | Noner-   )r   r   )r   r   s   "€r   r   rW   œ   sM   ø€ ÷ Vñ VàðVñ ˜•*ðVñ ˜�oð	Vð
 LðVð 
ñVr   c                ó¾   € VP                   R,          VP                   R,          re\        WVW#4      w  rxWx3WV38X  d   V# \        WxR7      pV P                  WVRR7      # )r   )r=   r>   T)rl   r?   rm   Ú	antialiaséþÿÿÿr0   )r1   rP   r   Úresize)	r[   rl   r   r?   rm   r=   r>   rK   rL   s	   &&&&&    r   Ú_resize_to_budgetÚ&NeoMMEImageProcessor._resize_to_budgetœ   s\   € ð Ÿ™ B�¨¯©°R­�Ü(>¸vÈhÓ(]Ñ%ˆØÐ*¨v¨oÔ=ØˆLÜ˜~ÔCˆØ�{‰{ ¸HÐPTˆ{ÓUÐUr   c          	      óB   <€ V ^8„  d   QhRRRS[ RS[RS[ S[ 3,          /# )r   rl   r,   r   r-   )r   r@   )r   r   s   "€r   r   rW   ª   s1   ø€ ÷ .ñ .¨ð .ÁCð .ÉEÐR`ÑbeÑgjÐRjÕLkñ .r   c                ó  € VP                   R,          VP                   R,          rCV) V,          ) V) V,          ) reWR,          V,
          pWb,          V,
          pV'       g	   V'       d   \        P                  ! V^ ^ W‡.^ R7      pWV3# )r   )Úfillrq   r0   )r1   ÚtvFÚpad)	r[   rl   r   r=   r>   Úgrid_heightÚ
grid_widthÚ
pad_heightÚ	pad_widths	   &&&      r   Ú_pad_to_patch_gridÚ'NeoMMEImageProcessor._pad_to_patch_gridª   sw   € ØŸ™ B�¨¯©°R­�Ø%+ G¨zÕ$9Ð":¸u¸fÈ
Õ>RÐ<S�ZØ Õ-°Õ6ˆ
ØÕ+¨eÕ3ˆ	ßŸÜ—G’G˜E A q¨)Ð#@ÀqÔIˆEà :Ð-Ð-r   c                ó  <€ V ^8„  d   QhRS[ R,          RS[RS[RS[R,          RS[R,          RR	R
S[RS[RS[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          RS[S[,          R,          RS[/# )r   r+   r,   rd   r   r   Nr?   rm   rn   Ú
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanÚ	image_stdÚdisable_groupingÚreturn_tensorsr-   )ÚlistÚboolr   r   ÚfloatÚstrr   r   )r   r   s   "€r   r   rW   ´   sÏ   ø€ ÷ 0
ñ 0
á�^Õ$ð0
ñ ð0
ñ ð	0
ñ
 ˜•*ð0
ñ ˜�oð0
ð Lð0
ñ ð0
ñ ð0
ñ ð0
ñ ™D¡�KÕ'¨$Õ.ð0
ñ ™4¡�;Õ&¨Õ-ð0
ñ  �+ð0
ñ ™jÕ(¨4Õ/ð0
ñ  
ñ!0
r   c           	     óœ  € \        WR 7      w  pp/ pVP                  4        F&  w  ppV'       d   V P                  VWEV4      pVVV&   K(  	  \        VV4      p\        VVR 7      w  pp/ p/ pVP                  4        F{  w  ppV P	                  VV4      w  pppV P                  VWxWšV4      p\        VV4      VV&   \        P                  ! VV..\        V4      ,          \        P                  R7      VV&   K}  	  \        VV4      p\        VV4      p\        R\        P                  ! V^ R7      R\        P                  ! V4      /VR7      # ))r†   )ÚdtyperS   )ÚdimrT   )ÚdataÚtensor_type)r   Úitemsrs   r   r~   Úrescale_and_normalizer;   ÚtorchÚtensorÚlenÚint64r   ÚcatÚstack)r[   r+   rd   r   r   r?   rm   r�   r‚   rƒ   r„   r…   r†   r‡   rV   Úgrouped_imagesÚgrouped_images_indexÚresized_images_groupedr1   Ústacked_imagesÚresized_imagesÚprocessed_images_groupedÚimage_grids_groupedrz   r{   rS   rT   s   &&&&&&&&&&&&&&,            r   Ú_preprocessÚ NeoMMEImageProcessor._preprocess´   sk  € ô" 0EÀVÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%×!7Ñ!7¸ÈÐX`Ó!a�Ø,:Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆä/DÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ð 7;×6MÑ6MÈnÐ^hÓ6iÑ3ˆN˜K¨Ø!×7Ñ7Ø 
¸LÐV_óˆNô /GÀ~ÐWaÓ.bÐ$ UÑ+Ü).¯ªØ˜zÐ*Ð+¬c°.Ó.AÕAÌÏÉô*Ð Ó&ñ &<ô &Ð&>Ð@TÓUˆÜ&Ð':Ð<PÓQˆÜà¤§	¢	¨,¸AÔ >Ø¤§¢¨]Ó!;ðð 'ô
ð 	
r   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )r   r=   r>   r-   r.   )r   r   s   "€r   r   rW   æ   s(   ø€ ÷ Dñ D±#ð D¹cð DÑZ]ñ Dr   c                ó†  € T;'       g    / pVP                  RV P                  4      pVP                  RV P                  4      pV P                  VP                  RV P                  4      R7      R,          pVP                  RV P
                  4      '       d   \        WWV4      w  rV) V,          ) V) V,          ) ,          # )zî
Return the number of image patches for one image, excluding row markers.

The method applies the effective resize settings, then rounds each image dimension up to a whole patch.
Values in `images_kwargs` override the processor settings.
r   r   r?   )r?   rd   )Úgetr   r   Ú_standardize_kwargsr?   rd   rP   )r[   r=   r>   Úimages_kwargsr   r   r?   s   &&&&   r   Úget_number_of_image_patchesÚ0NeoMMEImageProcessor.get_number_of_image_patchesæ   s«   € ð &×+Ð+¨ˆØ"×&Ñ& |°T·_±_ÓEˆ
Ø ×$Ñ$ Z°·±Ó?ˆØ×'Ñ'¨]×->Ñ->¸vÀtÇyÁyÓ-QÐ'ÓRÐSYÕZˆà×Ñ˜[¨$¯.©.×9Ò9Ü2°6À(ÓQ‰MˆFà�˜JÕ&Ð'¨e¨V°zÕ-AÐ+BÕCÐCr   r    gp?)N)"r!   r"   r#   r$   r%   r   Úvalid_kwargsr
   ÚBILINEARrm   r   r„   r   r…   Údo_convert_rgbrd   r�   r‚   rƒ   r   r   r?   Úmodel_input_namesrZ   r   r`   ri   rs   r~   r    r§   r'   r(   Ú__classcell__)r\   r   s   @@r   rR   rR   j   s¹   ù‡ € ñð .€Là!×*Ñ*€HØ'€JØ%€IØ€NØ€IØ€JØ€NØ€LØ€Jà€HØ€Dà'¨Ð9Ð÷#ó #ð ÷4ò 4ó ð4÷=ó =÷Vð V÷.ð .÷0
ð 0
÷dD÷ Dò Dr   rR   )"rG   Útypingr   r“   Útorchvision.transforms.v2r   rx   Úimage_processing_backendsr   Úimage_processing_utilsr   Úimage_transformsr   r   Úimage_utilsr	   r
   r   Úprocessing_utilsr   r   Úutilsr   r   Úutils.constantsr   r   Úutils.type_validatorsr   r   r;   rP   rR   Ú__all__r    r   r   Ú<module>r¹      st   ðó* Ý ã Ý 7å ;Ý 2ß Eß CÑ Cß 4ß /ß LÝ 1ô	4 °Uõ 	4õõ &)ðR ôJDÐ-ó JDó ðJDðZ "Ð
"‚r   