
    h                         S SK JrJr  S SKJrJrJrJrJr  S SK	r
\(       a  SSKJr  \ " S S5      5       r\ " S S	5      5       rg)
    )	dataclassfield)TYPE_CHECKINGAnyClassVarOptionalUnionN   )FeatureTypec                       \ rS rSr% Sr\\   \S'   \" SSS9r	\
\   \S'   Sr\\   \S	'   Sr\\   \S
'   \" S SSS9r\\S'   S rS\S\\S4   4   4S jrSrg)Translation   a  `Feature` for translations with fixed languages per example.
Here for compatibility with tfds.

Args:
    languages (`dict`):
        A dictionary for each example mapping string language codes to string translations.

Example:

```python
>>> # At construction time:
>>> datasets.features.Translation(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
...         'en': 'the cat',
...         'fr': 'le chat',
...         'de': 'die katze'
... }
```
	languagesNFdefaultrepriddictdtypepa_typer   initr   _typec                     [         R                  " [        U R                  5       Vs0 s H  o[         R                  " 5       _M     sn5      $ s  snf N)pastructsortedr   string)selflangs     W/home/james-whalen/.local/lib/python3.13/site-packages/datasets/features/translation.py__call__Translation.__call__)   s7    yyt~~8NO8N		+8NOPPOs   Areturnr   c                 p    SSK Jn  [        U R                  5       Vs0 s H  o"U" S5      _M     sn$ s  snf )z2Flatten the Translation feature into a dictionary.r
   )Valuer   )featuresr'   r   r   )r    r'   ks      r"   flattenTranslation.flatten,   s/    #,24>>,BC,Bq5?",BCCCs   3 )__name__
__module____qualname____firstlineno____doc__liststr__annotations__r   r   r   r   r   r   r   r   r#   r	   r   r*   __static_attributes__r,       r"   r   r      s    * Cyd7B7!E8C=!!GXc]!}5uEE3EQD}d33E.FFG Dr6   r   c                       \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   \" SSS9r\\   \S'   S	r\\   \S
'   Sr\\   \S'   \" S SSS9r\\S'   S rS rS rS\S\\S4   4   4S jrSrg)TranslationVariableLanguages3   a  `Feature` for translations with variable languages per example.
Here for compatibility with tfds.

Args:
    languages (`dict`):
        A dictionary for each example mapping string language codes to one or more string translations.
        The languages present may vary from example to example.

Returns:
    - `language` or `translation` (variable-length 1D `tf.Tensor` of `tf.string`):
        Language codes sorted in ascending order or plain text translations, sorted to align with language codes.

Example:

```python
>>> # At construction time:
>>> datasets.features.TranslationVariableLanguages(languages=['en', 'fr', 'de'])
>>> # During data generation:
>>> yield {
...         'en': 'the cat',
...         'fr': ['le chat', 'la chatte,']
...         'de': 'die katze'
... }
>>> # Tensor returned :
>>> {
...         'language': ['en', 'de', 'fr', 'fr'],
...         'translation': ['the cat', 'die katze', 'la chatte', 'le chat'],
... }
```
Nr   num_languagesFr   r   r   r   r   r   r   c                     U R                   (       a  [        [        U R                   5      5      OS U l         U R                   (       a  [        U R                   5      U l        g S U l        g r   )r   r   setlenr:   r    s    r"   __post_init__*TranslationVariableLanguages.__post_init__\   s=    8<DNN 34D48NNS0r6   c                     [         R                  " [         R                  " [         R                  " 5       5      [         R                  " [         R                  " 5       5      S.5      $ )Nlanguagetranslation)r   r   list_r   r>   s    r"   r#   %TranslationVariableLanguages.__call__`   s8    yybhhryy{&;BHHUWU^U^U`Labccr6   c           
      *   [        U R                  5      n[        U5      SS1:X  a  U$ U R                  (       aX  [        U5      U-
  (       aE  [        SSR                  [	        [        U5      U-
  5      5       SSR                  U5       S35      e/ nUR                  5        HQ  u  pE[        U[        5      (       a  UR                  XE45        M.  UR                  U Vs/ s H  odU4PM     sn5        MS     [        [	        U5      6 u  pxXxS.$ s  snf )NrC   rD   zSome languages in example (z, z) are not in valid set (z).rB   )r<   r   
ValueErrorjoinr   items
isinstancer3   appendextendzip)	r    translation_dictlang_settranslation_tuplesr!   textelr   translationss	            r"   encode_example+TranslationVariableLanguages.encode_examplec   s   t~~& Z$??##^^$4 5 @-diisCS?TW_?_8`.a-bbz{  |E  |E  FN  |O  {P  PR  S   *002JD$$$"))4,7"))*E"":*EF	 3 #&v.@'A"B	%CC +Fs   !D
r%   r   c                 L    SSK JnJn  U" U" S5      5      U" U" S5      5      S.$ )zCFlatten the TranslationVariableLanguages feature into a dictionary.r
   )Listr'   r   rB   )r(   rX   r'   )r    rX   r'   s      r"   r*   $TranslationVariableLanguages.flattenz   s)    ) U8_-h0
 	
r6   )r   r:   )r-   r.   r/   r0   r1   r   r   r2   r4   r:   intr   r   r3   r   r   r   r   r   r?   r#   rU   r	   r   r*   r5   r,   r6   r"   r8   r8   3   s    > !%Ix~$#'M8C='d7B7!E8C=!!GXc]!=EPUVE3VMdD.
}d33E.FFG 
r6   r8   )dataclassesr   r   typingr   r   r   r   r	   pyarrowr   r(   r   r   r8   r,   r6   r"   <module>r^      sR    ( @ @  % $D $D $DN M
 M
 M
r6   