Ë
    [^(h¤  ã            	       ón  — d dl Z d dlZd dlmZmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZmZmZ g d¢Zdedee   fd	„Zded
ee   dee   fd„Zdedefd„Ze
j.                  fdedededefd„Zdedefd„Z	 ddedee   defd„Z ede¬«      dededefd„«       Zdedefd„Zdedej<                  defd„Zy)é    N)ÚAnyÚOptional)Ú
deprecated)Ú_ShardingIterDataPipeÚSHARDING_PRIORITIES)ÚDataPipeÚDataPipeGraphÚtraverse_dps)Úapply_random_seedÚapply_shardingÚapply_shuffle_seedÚapply_shuffle_settingsÚget_all_graph_pipesÚgraphÚreturnc                 ó*   — t        | t        «       «      S ©N)Ú_get_all_graph_pipes_helperÚset)r   s    ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/utils/data/graph_settings.pyr   r      s   € Ü& u¬c«eÓ4Ð4ó    Úid_cachec                 óÄ   — g }| j                  «       D ]J  \  }\  }}||v rŒ|j                  |«       |j                  |«       |j                  t	        ||«      «       ŒL |S r   )ÚitemsÚaddÚappendÚextendr   )r   r   ÚresultsÚdp_idÚdatapipeÚ	sub_graphs         r   r   r      sh   € ð !€GØ(-¯©«ò IÑ$ˆÑ$�˜)Ø�HÑØØ�‰�UÔØ�‰�xÔ Ø�‰Ô2°9¸hÓGÕHðIð €Nr   r    c                 ó€   — t        | t        «      xs- t        | d«      xr t        j                  | j
                  «      S )Nr   )Ú
isinstancer   ÚhasattrÚinspectÚismethodr   ©r    s    r   Ú_is_sharding_datapiper(   )   s;   € Ü�hÔ 5Ó6ò Ü�Ð*Ó+ò 	6Ü×Ñ˜X×4Ñ4Ó5ðr   Únum_of_instancesÚinstance_idc                 óF   ‡‡‡‡— t        | «      }dˆˆˆˆfd„	Š ‰|«       | S )zÑ
    Apply dynamic sharding over the ``sharding_filter`` DataPipe that has a method ``apply_sharding``.

    RuntimeError will be raised when multiple ``sharding_filter`` are presented in the same branch.
    c                 óP  •— | j                  «       D ]’  \  }}d }t        |«      rs|�t        d|› d|› �«      ‚t        j                  |j
                  «      }t        |j                  «      dk  r|j                  ‰‰«       n|j                  ‰‰‰	¬«       |}|€|} ‰||«       Œ” y )NzoSharding twice on a single pipeline is likely unintended and will cause data loss. Sharding already applied to z while trying to apply to é   )Úsharding_group)Úvaluesr(   ÚRuntimeErrorr%   Ú	signaturer   ÚlenÚ
parameters)
r   Úprev_appliedÚdpr!   ÚappliedÚsigÚ_helperr*   r)   r.   s
         €€€€r   r8   zapply_sharding.<locals>._helper=   sÄ   ø€ Ø"Ÿ\™\›^ò 	(‰MˆB�	ØˆGÜ$ RÔ(ØÐ+Ü&ð7Ø7C°nÐD^Ð_aÐ^bðdóð ô
 ×'Ñ'¨×(9Ñ(9Ó:�Ü�s—~‘~Ó&¨Ò*Ø×%Ñ%Ð&6¸ÕDà×%Ñ%Ø(¨+Ànð &ô ð �ØˆØ&�Ù�I˜wÕ'ñ'	(r   r   )r
   )r    r)   r*   r.   r   r8   s    ``` @r   r   r   0   s'   û€ ô ˜Ó"€E÷(ð (ñ, ˆE„Nà€Or   c                 óº   — t        | d«      xrN t        | d«      xr@ t        j                  | j                  «      xr t        j                  | j                  «      S )NÚset_shuffleÚset_seed)r$   r%   r&   r:   r;   r'   s    r   Ú_is_shuffle_datapiper<   X   sT   € ä�˜-Ó(ò 	0Ü�H˜jÓ)ò	0ä×Ñ˜X×1Ñ1Ó2ò	0ô ×Ñ˜X×.Ñ.Ó/ð	r   Úshufflec                 ó  — |€| S t        | «      }t        |«      }|D �cg c]  }t        |«      sŒ|‘Œ }}|s*|r(t        j                  d«       | j                  «       } | g}|D ]  }|j                  |«       Œ | S c c}w )aE  
    Traverse the graph of ``DataPipes`` to find and set shuffle attribute.

    Apply the method to each `DataPipe` that has APIs of ``set_shuffle``
    and ``set_seed``.

    Args:
        datapipe: DataPipe that needs to set shuffle attribute
        shuffle: Shuffle option (default: ``None`` and no-op to the graph)
    z«`shuffle=True` was set, but the datapipe does not contain a `Shuffler`. Adding one at the end. Be aware that the default buffer size might not be sufficient for your task.)r
   r   r<   ÚwarningsÚwarnr=   r:   )r    r=   r   Ú	all_pipesÚpipeÚ	shufflersÚshufflers          r   r   r   a   sš   € ð €Øˆä˜Ó"€EÜ# EÓ*€IØ"+ÖJ˜$Ô/CÀDÕ/I’ÐJ€IÐJÙ™Ü�‰ð[ô	
ð ×#Ñ#Ó%ˆàð
ˆ	ð ò &ˆØ×Ñ˜WÕ%ð&ð €Oùò Ks
   ŸA<°A<z�`apply_shuffle_seed` is deprecated since 1.12 and will be removed in the future releases. Please use `apply_random_seed` instead.)ÚcategoryÚrngc                 ó   — t        | |«      S r   )r   )r    rF   s     r   r   r   „   s   € ô ˜X sÓ+Ð+r   c                 ó\   — t        | d«      xr t        j                  | j                  «      S )Nr;   )r$   r%   r&   r;   r'   s    r   Ú_is_random_datapiperI   �   s%   € Ü�8˜ZÓ(ÒP¬W×-=Ñ-=¸h×>OÑ>OÓ-PÐPr   c                 óª  — t        | «      }t        |«      }t        «       }g }|D ]G  }t        |«      |v rŒt	        |«      sŒ|j                  |«       |j                  t        |«      «       ŒI |D ]_  }t        t        j                  dt        j                  ¬«      j                  |¬«      j                  «       «      }|j                  |«       Œa | S )a6  
    Traverse the graph of ``DataPipes`` to find random ``DataPipe`` with an API of ``set_seed``.

    Then set the random seed based on the provided RNG to those ``DataPipe``.

    Args:
        datapipe: DataPipe that needs to set randomness
        rng: Random number generator to generate random seeds
    © )Údtype)Ú	generator)r
   r   r   ÚidrI   r   r   ÚintÚtorchÚemptyÚint64Úrandom_Úitemr;   )r    rF   r   rA   ÚcacheÚrandom_datapipesrB   Úrandom_seeds           r   r   r   ‘   sÄ   € ô ˜Ó"€EÜ# EÓ*€Iô ‹E€EØÐØò  ˆÜˆd‹8�uÑØÜ˜tÕ$Ø×#Ñ# DÔ)Ø�I‰I”b˜“hÕð ð !ò #ˆÜÜ�K‰K˜¤%§+¡+Ô.×6Ñ6ÀÐ6ÓE×JÑJÓLó
ˆð 	�‰�kÕ"ð	#ð €Or   r   ) r%   r?   Útypingr   r   Útyping_extensionsr   rP   Ú(torch.utils.data.datapipes.iter.shardingr   r   Útorch.utils.data.graphr   r	   r
   Ú__all__Úlistr   r   rO   r   Úboolr(   ÚDEFAULTr   r<   r   ÚFutureWarningr   rI   Ú	Generatorr   rK   r   r   ú<module>rb      sQ  ðã Û ß  Ý (ã ÷÷ IÑ Hò€ð5˜}ð 5°°h±ó 5ð
Øð
Ø$'¨¡Hð
à	ˆ(�^ó
ð Hð °ó ð '×.Ñ.ñ	%Øð%àð%ð ð%ð
 ó%ðP 8ð °ó ð 37ñ Øð Ø!)¨$¡ð àó ñF ð.àôð
, ð ,°ð ,¸ò ,óð
,ðQ (ð Q¨tó Qð ð ¨u¯©ð À8ô r   