+
    ˜°³jì  ã                   ó¾   € ^ RI HtHt ^ RIHt ^ RIHt ^ RIHt	 ^ RI
Ht ^ RIHtHtHt R.t]! R4      t]! R	R
R7      t]! R4       ! R R]],          4      4       tR# )é    )ÚCallableÚIterator)ÚTypeVar)Úfunctional_datapipe)Údataframe_wrapper)ÚIterDataPipe)Ú_check_unpickable_fnÚStreamWrapperÚvalidate_input_colÚFilterIterDataPipeÚ_TÚ_T_coT)Ú	covariantÚfilterc                   óˆ   a a€ ] tR t^t oRtRV3R lV 3R llltV3R lR ltV3R lR ltV3R lR	 ltV3R
 lt	Rt
VtV ;t# )r   aë  
Filters out elements from the source datapipe according to input ``filter_fn`` (functional name: ``filter``).

Args:
    datapipe: Iterable DataPipe being filtered
    filter_fn: Customized function mapping an element to a boolean.
    input_col: Index or indices of data which ``filter_fn`` is applied, such as:

        - ``None`` as default to apply ``filter_fn`` to the data directly.
        - Integer(s) is used for list/tuple.
        - Key(s) is used for dict.

Example:
    >>> # xdoctest: +SKIP
    >>> from torchdata.datapipes.iter import IterableWrapper
    >>> def is_even(n):
    ...     return n % 2 == 0
    >>> dp = IterableWrapper(range(5))
    >>> filter_dp = dp.filter(filter_fn=is_even)
    >>> list(filter_dp)
    [0, 2, 4]
c                ó:   <€ V ^8„  d   QhRS[ S[,          RS[RR/# )é   ÚdatapipeÚ	filter_fnÚreturnN©r   r   r   )ÚformatÚ__classdict__s   "€Új/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/utils/data/datapipes/iter/selecting.pyÚ__annotate__ÚFilterIterDataPipe.__annotate__2   s.   ø€ ÷ 1ñ 1á™uÕ%ð1ñ ð1ð
 
ñ1ó    c                ót   <€ \         SV `  4        Wn        \        V4       W n        W0n        \        W#4       R # ©N)ÚsuperÚ__init__r   r	   r   Ú	input_colr   )Úselfr   r   r"   Ú	__class__s   &&&&€r   r!   ÚFilterIterDataPipe.__init__2   s/   ø€ ô 	‰ÑÔØ Œä˜YÔ'Ø"Œà"ŒÜ˜9Ö0r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )Úbool)r   r   s   "€r   r   r   A   s   ø€ ÷ 8ñ 8©ñ 8r   c                ó~  a€ V P                   f   V P                  S4      # \        V P                   \        \        34      '       dW   \        ;QJ d!    . V3R lV P                    4       F  NK  	  5M! V3R lV P                    4       4      pV P                  ! V!  # V P                  SV P                   ,          4      # )Nc              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir   © )Ú.0ÚcolÚdatas   & €r   Ú	<genexpr>Ú6FilterIterDataPipe._apply_filter_fn.<locals>.<genexpr>E   s   øé € Ð=©n s˜˜cŸš«nùs   ƒ)r"   r   Ú
isinstanceÚlistÚtuple)r#   r.   Úargss   &f r   Ú_apply_filter_fnÚ#FilterIterDataPipe._apply_filter_fnA   s~   ø€ Ø�>‰>Ò!Ø—>‘> $Ó'Ð'Ü˜Ÿ™¬¬u¨×6Ò6ß”5Ô=¨d¯nªnÓ=—5‘5Ô=¨d¯nªnÓ=Ó=ˆDØ—>’> 4Ñ(Ð(à—>‘> $ t§~¡~Õ"6Ó7Ð7r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r'   )r   r   )r   r   s   "€r   r   r   J   s   ø€ ÷ 2ñ 2™(¡5�/ñ 2r   c              #  ó¢   "  € V P                    F:  pV P                  V4      w  r#V'       d   Vx € K$  \        P                  ! V4       K<  	  R # 5ir   )r   Ú_returnIfTruer
   Úclose_streams)r#   r.   Ú	conditionÚfiltereds   &   r   Ú__iter__ÚFilterIterDataPipe.__iter__J   s<   é € Ø—M”MˆDØ"&×"4Ñ"4°TÓ":ÑˆIßØ”ä×+Ò+¨DÖ1ó "ùs   ‚AAc                ó<   <€ V ^8„  d   QhRS[ RS[S[S[ 3,          /# )r   r.   r   )r   r3   r(   )r   r   s   "€r   r   r   R   s#   ø€ ÷ ñ ¡"ð ©©t±R¨x­ñ r   c                ó®  € V P                  V4      p\        P                  ! V4      '       d|   . p\        \        P                  ! V4      4       F4  w  rEV'       g   K  VP                  \        P                  ! W4      4       K6  	  V'       d   R \        P                  ! V4      3# R# \        V\        4      '       g   \        R\        V4      4      hW!3# )TzEBoolean output is required for `filter_fn` of FilterIterDataPipe, got)FN)r5   Ú
df_wrapperÚ	is_columnÚ	enumerateÚiterateÚappendÚget_itemÚconcatr1   r(   Ú
ValueErrorÚtype)r#   r.   r;   ÚresultÚidxÚmasks   &&    r   r9   Ú FilterIterDataPipe._returnIfTrueR   s°   € Ø×)Ñ)¨$Ó/ˆ	ä×Ò 	×*Ò*àˆFÜ&¤z×'9Ò'9¸)Ó'DÖE‘	�ß‘4Ø—M‘M¤*×"5Ò"5°dÓ"@ÖAñ F÷ ØœZ×.Ò.¨vÓ6Ð6Ð6à"Ð"ä˜)¤T×*Ò*ÜØWÜ�Y“óð ð
 ˆÐr   c                óB   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[;R&   # )r   r   r   r   )r   r   s   "€r   r   r      s$   ø‡ ‚ ñ2 ™5Õ!Ñ!ñ3 ñ4 Ñò5 r   )r   r   r"   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   r5   r=   r9   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r$   r   s   @@r   r   r      s:   ù‡ € ñ÷41õ 1÷8ð 8÷2ð 2÷ð ÷y … r   N)Úcollections.abcr   r   Útypingr   Ú%torch.utils.data.datapipes._decoratorr   Ú$torch.utils.data.datapipes.dataframer   rA   Ú#torch.utils.data.datapipes.datapiper   Ú'torch.utils.data.datapipes.utils.commonr	   r
   r   Ú__all__r   r   r   r+   r   r   Ú<module>r_      sg   ðç .Ý å EÝ PÝ <÷ñ ð  Ð
 €ñ ˆTƒ]€Ù� 4Ô(€ñ �XÓôO˜ eÕ,ó Oó òOr   