





import argparse
import json
import logging
import os
import sys
from unittest.mock import patch

from transformers.testing_utils import TestCasePlus, get_gpu_count, slow


__lowerCamelCase       :     int   =     [
    os.path.join(os.path.dirname(__file__), dirname)
    for dirname in [
        """text-classification""",
        """language-modeling""",
        """summarization""",
        """token-classification""",
        """question-answering""",
    ]
]
sys.path.extend(SRC_DIRS)


if SRC_DIRS is not None:
    import run_clm_flax
    import run_flax_glue
    import run_flax_ner
    import run_mlm_flax
    import run_qa
    import run_summarization_flax
    import run_ta_mlm_flax


logging.basicConfig(level=logging.DEBUG)

__lowerCamelCase       :     str   =     logging.getLogger()



def 		A_				(     )						-> List[str]:
 UpperCamelCase	:					List[str]       	=   argparse.ArgumentParser()
 parser.add_argument("-f"     )
 UpperCamelCase	:					Union[str, Any]       	=   parser.parse_args()
 return args.f



def 		A_				(     _lowerCAmelCase							,   _lowerCAmelCase="eval"     )						-> Optional[int]:
 UpperCamelCase	:					Optional[Any]       	=   os.path.join(_lowerCAmelCase							,   F"""{split}_results.json"""     )
 if os.path.exists(_lowerCAmelCase     ):
  with open(_lowerCAmelCase							,   "r"     ) as f:
   return json.load(_lowerCAmelCase     )
 raise ValueError(F"""can't find {path}"""     )


__lowerCamelCase       :     Any   =     logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)



class 					A__   (       __snake_case			):





      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					str       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Optional[Any]       	=   F"""
            run_glue.py
            --model_name_or_path distilbert-base-uncased
            --output_dir {tmp_dir}
            --train_file ./tests/fixtures/tests_samples/MRPC/train.csv
            --validation_file ./tests/fixtures/tests_samples/MRPC/dev.csv
            --per_device_train_batch_size=2
            --per_device_eval_batch_size=1
            --learning_rate=1e-4
            --eval_steps=2
            --warmup_steps=2
            --seed=42
            --max_seq_length=128
            """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_flax_glue.main()
        UpperCamelCase	:					int       	=   get_results(A_   )
        self.assertGreaterEqual(result["eval_accuracy"]       ,							0.75   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					Any       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Optional[Any]       	=   F"""
            run_clm_flax.py
            --model_name_or_path distilgpt2
            --train_file ./tests/fixtures/sample_text.txt
            --validation_file ./tests/fixtures/sample_text.txt
            --do_train
            --do_eval
            --block_size 128
            --per_device_train_batch_size 4
            --per_device_eval_batch_size 4
            --num_train_epochs 2
            --logging_steps 2 --eval_steps 2
            --output_dir {tmp_dir}
            --overwrite_output_dir
            """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_clm_flax.main()
        UpperCamelCase	:					Optional[Any]       	=   get_results(A_   )
        self.assertLess(result["eval_perplexity"]       ,							100   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					Any       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Optional[Any]       	=   F"""
            run_summarization.py
            --model_name_or_path t5-small
            --train_file tests/fixtures/tests_samples/xsum/sample.json
            --validation_file tests/fixtures/tests_samples/xsum/sample.json
            --test_file tests/fixtures/tests_samples/xsum/sample.json
            --output_dir {tmp_dir}
            --overwrite_output_dir
            --num_train_epochs=3
            --warmup_steps=8
            --do_train
            --do_eval
            --do_predict
            --learning_rate=2e-4
            --per_device_train_batch_size=2
            --per_device_eval_batch_size=1
            --predict_with_generate
        """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_summarization_flax.main()
        UpperCamelCase	:					Optional[Any]       	=   get_results(A_       ,							split="test"   )
        self.assertGreaterEqual(result["test_rouge1"]       ,							10   )
        self.assertGreaterEqual(result["test_rouge2"]       ,							2   )
        self.assertGreaterEqual(result["test_rougeL"]       ,							7   )
        self.assertGreaterEqual(result["test_rougeLsum"]       ,							7   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					str       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Tuple       	=   F"""
            run_mlm.py
            --model_name_or_path distilroberta-base
            --train_file ./tests/fixtures/sample_text.txt
            --validation_file ./tests/fixtures/sample_text.txt
            --output_dir {tmp_dir}
            --overwrite_output_dir
            --max_seq_length 128
            --per_device_train_batch_size 4
            --per_device_eval_batch_size 4
            --logging_steps 2 --eval_steps 2
            --do_train
            --do_eval
            --num_train_epochs=1
        """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_mlm_flax.main()
        UpperCamelCase	:					Dict       	=   get_results(A_   )
        self.assertLess(result["eval_perplexity"]       ,							42   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					Dict       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Any       	=   F"""
            run_t5_mlm_flax.py
            --model_name_or_path t5-small
            --train_file ./tests/fixtures/sample_text.txt
            --validation_file ./tests/fixtures/sample_text.txt
            --do_train
            --do_eval
            --max_seq_length 128
            --per_device_train_batch_size 4
            --per_device_eval_batch_size 4
            --num_train_epochs 2
            --logging_steps 2 --eval_steps 2
            --output_dir {tmp_dir}
            --overwrite_output_dir
            """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_ta_mlm_flax.main()
        UpperCamelCase	:					Tuple       	=   get_results(A_   )
        self.assertGreaterEqual(result["eval_accuracy"]       ,							0.42   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					Union[str, Any]       	=   7 if get_gpu_count() > 1 else 2

       UpperCamelCase	:					int       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					Dict       	=   F"""
            run_flax_ner.py
            --model_name_or_path bert-base-uncased
            --train_file tests/fixtures/tests_samples/conll/sample.json
            --validation_file tests/fixtures/tests_samples/conll/sample.json
            --output_dir {tmp_dir}
            --overwrite_output_dir
            --do_train
            --do_eval
            --warmup_steps=2
            --learning_rate=2e-4
            --logging_steps 2 --eval_steps 2
            --per_device_train_batch_size=2
            --per_device_eval_batch_size=2
            --num_train_epochs={epochs}
            --seed 7
        """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_flax_ner.main()
        UpperCamelCase	:					Tuple       	=   get_results(A_   )
        self.assertGreaterEqual(result["eval_accuracy"]       ,							0.75   )
        self.assertGreaterEqual(result["eval_f1"]       ,							0.3   )





      @slow
      def        __UpperCamelCase( self   ):
       '''simple docstring'''




       UpperCamelCase	:					str       	=   self.get_auto_remove_tmp_dir()
       UpperCamelCase	:					str       	=   F"""
            run_qa.py
            --model_name_or_path bert-base-uncased
            --version_2_with_negative
            --train_file tests/fixtures/tests_samples/SQUAD/sample.json
            --validation_file tests/fixtures/tests_samples/SQUAD/sample.json
            --output_dir {tmp_dir}
            --overwrite_output_dir
            --num_train_epochs=3
            --warmup_steps=2
            --do_train
            --do_eval
            --logging_steps 2 --eval_steps 2
            --learning_rate=2e-4
            --per_device_train_batch_size=2
            --per_device_eval_batch_size=1
        """.split()

       with patch.object(A_       ,							"argv"       ,							A_   ):
        run_qa.main()
        UpperCamelCase	:					Optional[int]       	=   get_results(A_   )
        self.assertGreaterEqual(result["eval_f1"]       ,							30   )
        self.assertGreaterEqual(result["eval_exact"]       ,							30   )

"""simple docstring"""






import argparse


lowerCAmelCase__  :  List[str]						     =	'docs/source/_static/js/custom.js'



def   a_						(					lowerCamelCase       ):
				with open(lowerCamelCase					,			encoding='utf-8'					,			newline='\n'       ) as f:
								UpperCAmelCase__             =							f.readlines()
				UpperCAmelCase__             =							0

				# First let's put the right version
				while not lines[index].startswith('const stableVersion ='       ):
								index += 1
				UpperCAmelCase__             =							f'''const stableVersion = "v{version}"\n'''

				# Then update the dictionary
				while not lines[index].startswith('const versionMapping = {'       ):
								index += 1

				# We go until the end
				while not lines[index].startswith('}'       ):
								index += 1
				# We add the new version at the end
				lines[index - 1] += f'''    "v{version}": "v{version}",\n'''

				with open(lowerCamelCase					,			'w'					,			encoding='utf-8'					,			newline='\n'       ) as f:
								f.writelines(lowerCamelCase       )


if __name__ == "__main__":
						lowerCAmelCase__  :  List[Any]						     =	argparse.ArgumentParser()
						parser.add_argument('--version', help='Release version.')
						lowerCAmelCase__  :  Optional[int]						     =	parser.parse_args()
						update_custom_js(args.version)



