§
    �Štj´  ã            	       ót  — d dl Z d dlZd dl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dz  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dS )é    N)ÚAny)Ú
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/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/data/graph_settings.pyr   r      s   € Ý& u­c©e¬eÑ4Ô4Ð4ó    Úid_cachec                 óè   — g }|                       ¦   «         D ]Z\  }\  }}||v rŒ|                     |¦  «         |                     |¦  «         |                     t	          ||¦  «        ¦  «         Œ[|S r   )ÚitemsÚaddÚappendÚextendr   )r   r   ÚresultsÚdp_idÚdatapipeÚ	sub_graphs         r   r   r      sƒ   € ð !€GØ(-¯ª©¬ð Ið IÑ$ˆÑ$�˜)Ø�HÐÐØØ�Š�UÑÔÐØ�Š�xÑ Ô Ð Ø�ŠÕ2°9¸hÑGÔGÑHÔHÐHÐHØ€Nr   r   c                 ó~   — t          | t          ¦  «        p(t          | d¦  «        ot          j        | j        ¦  «        S )Nr   )Ú
isinstancer   ÚhasattrÚinspectÚismethodr   ©r   s    r   Ú_is_sharding_datapiper'   )   s>   € Ý�hÕ 5Ñ6Ô6ð Ý�Ð*Ñ+Ô+ð 	6ÝÔ˜XÔ4Ñ5Ô5ðr   Únum_of_instancesÚinstance_idc                 óV   ‡‡‡‡— t          | ¦  «        }d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.
    Nr   c                 óp  •— |                       ¦   «         D ]Ÿ\  }}d }t          |¦  «        ry|�t          d|› d|› �¦  «        ‚t          j        |j        ¦  «        }t          |j        ¦  «        dk     r|                     ‰‰¦  «         n|                     ‰‰‰	¬¦  «         |}|€|} ‰||¦  «         Œ d S )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   r7   zapply_sharding.<locals>._helper=   s  ø€ Ø"Ÿ\š\™^œ^ð 	(ð 	(‰MˆB�	ØˆGÝ$ RÑ(Ô(ð ØÐ+Ý&ðdØ7Cðdð dØ_aðdð dñô ð õ
 Ô'¨Ô(9Ñ:Ô:�Ý�s”~Ñ&Ô&¨Ò*Ð*Ø×%Ò%Ð&6¸ÑDÔDÐDÐDà×%Ò%Ø(¨+Ànð &ñ ô ð ð �ØˆØ&�ØˆG�I˜wÑ'Ô'Ð'Ð'ð'	(ð 	(r   r   )r   N)r	   )r   r(   r)   r-   r   r7   s    ``` @r   r   r   0   s[   øøøø€ õ ˜Ñ"Ô"€Eð(ð (ð (ð (ð (ð (ð (ð (ð (ð (ð, €GˆE�N„N€Nà€Or   c                 ó¦   — t          | d¦  «        oAt          | d¦  «        o1t          j        | j        ¦  «        ot          j        | j        ¦  «        S )NÚset_shuffleÚset_seed)r#   r$   r%   r9   r:   r&   s    r   Ú_is_shuffle_datapiper;   X   sT   € å�˜-Ñ(Ô(ð 	0Ý�H˜jÑ)Ô)ð	0åÔ˜XÔ1Ñ2Ô2ð	0õ Ô˜XÔ.Ñ/Ô/ð	r   Úshufflec                 óø   — |€| S t          | ¦  «        }t          |¦  «        }d„ |D ¦   «         }|s/|r-t          j        dd¬¦  «         |                      ¦   «         } | g}|D ]}|                     |¦  «         Œ| S )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)
    Nc                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS © )r;   )Ú.0Úpipes     r   ú
<listcomp>z*apply_shuffle_settings.<locals>.<listcomp>q   s&   € ÐJÐJÐJ˜$Õ/CÀDÑ/IÔ/IÐJ�ÐJÐJÐJr   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.é   )Ú
stacklevel)r	   r   ÚwarningsÚwarnr<   r9   )r   r<   r   Ú	all_pipesÚ	shufflersÚshufflers         r   r   r   a   s¶   € ð €Øˆå˜Ñ"Ô"€EÝ# EÑ*Ô*€IØJÐJ )ÐJÑJÔJ€IØð 	
˜ð 	
ÝŒð[àð	
ñ 	
ô 	
ð 	
ð
 ×#Ò#Ñ%Ô%ˆàð
ˆ	ð ð &ð &ˆØ×Ò˜WÑ%Ô%Ð%Ð%à€Or   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   rK   s     r   r   r   ƒ   s   € õ ˜X sÑ+Ô+Ð+r   c                 óT   — t          | d¦  «        ot          j        | j        ¦  «        S )Nr:   )r#   r$   r%   r:   r&   s    r   Ú_is_random_datapiperN   Œ   s%   € Ý�8˜ZÑ(Ô(ÐP­WÔ-=¸hÔ>OÑ-PÔ-PÐPr   c                 óö  — t          | ¦  «        }t          |¦  «        }t          ¦   «         }g }|D ]Z}t          |¦  «        |v rŒt	          |¦  «        r7|                     |¦  «         |                     t          |¦  «        ¦  «         Œ[|D ]j}t          t          j	        dt          j
        ¬¦  «                             |¬¦  «                             ¦   «         ¦  «        }|                     |¦  «         Œk| 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
    r?   )Údtype)Ú	generator)r	   r   r   ÚidrN   r   r   ÚintÚtorchÚemptyÚint64Úrandom_Úitemr:   )r   rK   r   rG   ÚcacheÚrandom_datapipesrA   Úrandom_seeds           r   r
   r
   �   sú   € õ ˜Ñ"Ô"€EÝ# EÑ*Ô*€Iõ ‰EŒE€EØÐØð  ð  ˆÝˆd‰8Œ8�uÐÐØÝ˜tÑ$Ô$ð 	 Ø×#Ò# DÑ)Ô)Ð)Ø�IŠI•b˜‘h”hÑÔÐøà ð #ð #ˆÝÝŒK˜¥%¤+Ð.Ñ.Ô.×6Ò6ÀÐ6ÑEÔE×JÒJÑLÔLñ
ô 
ˆð 	�Š�kÑ"Ô"Ð"Ð"à€Or   r   )r$   rE   Útypingr   Útyping_extensionsr   rT   Ú(torch.utils.data.datapipes.iter.shardingr   r   Útorch.utils.data.graphr   r   r	   Ú__all__Úlistr   r   rS   r   Úboolr'   ÚDEFAULTr   r;   r   ÚFutureWarningr   rN   Ú	Generatorr
   r?   r   r   ú<module>rf      sc  ðà €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (à €€€ðð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð €ð5˜}ð 5°°h´ð 5ð 5ð 5ð 5ð
Øð
Ø$'¨¤Hð
à	ˆ(„^ð
ð 
ð 
ð 
ð Hð °ð ð ð ð ð 'Ô.ð	%ð %Øð%àð%ð ð%ð
 ð%ð %ð %ð %ðP 8ð °ð ð ð ð ðð  Xð ¸¸t¹ð Èxð ð ð ð ðD €ð.àðñ ô ð
, ð ,°ð ,¸ð ,ð ,ð ,ñô ð
,ðQ (ð Q¨tð Qð Qð Qð Qð ð ¨u¬ð À8ð ð ð ð ð ð r   