





'''simple docstring'''




import os
import shutil
import sys
import tempfile
import unittest
from pathlib import Path

import pytest

import transformers
from transformers import (
    BERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
    GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP,
    AutoTokenizer,
    BertConfig,
    BertTokenizer,
    BertTokenizerFast,
    CTRLTokenizer,
    GPTaTokenizer,
    GPTaTokenizerFast,
    PreTrainedTokenizerFast,
    RobertaTokenizer,
    RobertaTokenizerFast,
    is_tokenizers_available,
)
from transformers.models.auto.configuration_auto import CONFIG_MAPPING, AutoConfig
from transformers.models.auto.tokenization_auto import (
    TOKENIZER_MAPPING,
    get_tokenizer_config,
    tokenizer_class_from_name,
)
from transformers.models.roberta.configuration_roberta import RobertaConfig
from transformers.testing_utils import (
    DUMMY_DIFF_TOKENIZER_IDENTIFIER,
    DUMMY_UNKNOWN_IDENTIFIER,
    SMALL_MODEL_IDENTIFIER,
    RequestCounter,
    require_tokenizers,
    slow,
)


sys.path.append(str(Path(__file__).parent.parent.parent.parent / '''utils'''))

from test_module.custom_configuration import CustomConfig  # noqa E402
from test_module.custom_tokenization import CustomTokenizer  # noqa E402


if is_tokenizers_available():
  from test_module.custom_tokenization_fast import CustomTokenizerFast


class  SCREAMING_SNAKE_CASE    (unittest.TestCase							):


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Dict      =       0


     @slow
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          for model_name in (x for x in BERT_PRETRAINED_CONFIG_ARCHIVE_MAP.keys() if "japanese" not in x):
               __A						: List[Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
               self.assertIsNotNone(_UpperCAmelCase)
               self.assertIsInstance(_UpperCAmelCase						,	(BertTokenizer, BertTokenizerFast))
               self.assertGreater(len(_UpperCAmelCase)						,	0)

          for model_name in GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP.keys():
               __A						: str      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
               self.assertIsNotNone(_UpperCAmelCase)
               self.assertIsInstance(_UpperCAmelCase						,	(GPTaTokenizer, GPTaTokenizerFast))
               self.assertGreater(len(_UpperCAmelCase)						,	0)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
          self.assertIsInstance(_UpperCAmelCase						,	(BertTokenizer, BertTokenizerFast))
          self.assertEqual(tokenizer.vocab_size						,	12)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Union[str, Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
          self.assertIsInstance(_UpperCAmelCase						,	(RobertaTokenizer, RobertaTokenizerFast))
          self.assertEqual(tokenizer.vocab_size						,	20)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Dict      =       AutoConfig.from_pretrained(_UpperCAmelCase)
          self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)
          # Check that tokenizer_type ≠ model_type
          __A						: Any      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	config=_UpperCAmelCase)
          self.assertIsInstance(_UpperCAmelCase						,	(BertTokenizer, BertTokenizerFast))
          self.assertEqual(tokenizer.vocab_size						,	12)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with tempfile.TemporaryDirectory() as tmp_dir:
               shutil.copy('./tests/fixtures/vocab.txt'						,	os.path.join(_UpperCAmelCase						,	'vocab.txt'))

               __A						: Dict      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	tokenizer_type='bert'						,	use_fast=_UpperCAmelCase)
               self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)

          with tempfile.TemporaryDirectory() as tmp_dir:
               shutil.copy('./tests/fixtures/vocab.json'						,	os.path.join(_UpperCAmelCase						,	'vocab.json'))
               shutil.copy('./tests/fixtures/merges.txt'						,	os.path.join(_UpperCAmelCase						,	'merges.txt'))

               __A						: Dict      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	tokenizer_type='gpt2'						,	use_fast=_UpperCAmelCase)
               self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with tempfile.TemporaryDirectory() as tmp_dir:
               shutil.copy('./tests/fixtures/vocab.txt'						,	os.path.join(_UpperCAmelCase						,	'vocab.txt'))

               __A						: Optional[int]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	tokenizer_type='bert')
               self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)

          with tempfile.TemporaryDirectory() as tmp_dir:
               shutil.copy('./tests/fixtures/vocab.json'						,	os.path.join(_UpperCAmelCase						,	'vocab.json'))
               shutil.copy('./tests/fixtures/merges.txt'						,	os.path.join(_UpperCAmelCase						,	'merges.txt'))

               __A						: Any      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	tokenizer_type='gpt2')
               self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with pytest.raises(_UpperCAmelCase):
               AutoTokenizer.from_pretrained('./'						,	tokenizer_type='xxx')


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          for tokenizer_class in [BertTokenizer, BertTokenizerFast, AutoTokenizer]:
               __A						: Union[str, Any]      =       tokenizer_class.from_pretrained('wietsedv/bert-base-dutch-cased')
               self.assertIsInstance(_UpperCAmelCase						,	(BertTokenizer, BertTokenizerFast))

               if isinstance(_UpperCAmelCase						,	_UpperCAmelCase):
                    self.assertEqual(tokenizer.basic_tokenizer.do_lower_case						,	_UpperCAmelCase)
               else:
                    self.assertEqual(tokenizer.do_lower_case						,	_UpperCAmelCase)

               self.assertEqual(tokenizer.model_max_length						,	512)


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          for tokenizer_class in [BertTokenizer, BertTokenizerFast, AutoTokenizer]:
               with self.assertRaisesRegex(
                   _UpperCAmelCase						,	'julien-c/herlolip-not-exists is not a local folder and is not a valid model identifier'						,	):
                    __A						: Optional[Any]      =       tokenizer_class.from_pretrained('julien-c/herlolip-not-exists')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Dict      =       TOKENIZER_MAPPING.values()
          __A						: str      =       []

          for slow_tok, fast_tok in tokenizers:
               if slow_tok is not None:
                    tokenizer_names.append(slow_tok.__name__)

               if fast_tok is not None:
                    tokenizer_names.append(fast_tok.__name__)

          for tokenizer_name in tokenizer_names:
               # must find the right class
               tokenizer_class_from_name(_UpperCAmelCase)


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          self.assertIsInstance(AutoTokenizer.from_pretrained('bert-base-cased'						,	use_fast=_UpperCAmelCase)						,	_UpperCAmelCase)
          self.assertIsInstance(AutoTokenizer.from_pretrained('bert-base-cased')						,	_UpperCAmelCase)


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Optional[int]      =       AutoTokenizer.from_pretrained('distilbert-base-uncased'						,	do_lower_case=_UpperCAmelCase)
          __A						: Tuple      =       'Hello, world. How are you?'
          __A						: Tuple      =       tokenizer.tokenize(_UpperCAmelCase)
          self.assertEqual('[UNK]'						,	tokens[0])

          __A						: Any      =       AutoTokenizer.from_pretrained('microsoft/mpnet-base'						,	do_lower_case=_UpperCAmelCase)
          __A						: Dict      =       tokenizer.tokenize(_UpperCAmelCase)
          self.assertEqual('[UNK]'						,	tokens[0])


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Any      =       AutoTokenizer.from_pretrained('robot-test/dummy-tokenizer-fast-with-model-config')
          self.assertEqual(type(_UpperCAmelCase)						,	_UpperCAmelCase)
          self.assertEqual(tokenizer.model_max_length						,	512)
          self.assertEqual(tokenizer.vocab_size						,	3_0000)
          self.assertEqual(tokenizer.unk_token						,	'[UNK]')
          self.assertEqual(tokenizer.padding_side						,	'right')
          self.assertEqual(tokenizer.truncation_side						,	'right')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Dict      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
          self.assertIsInstance(_UpperCAmelCase						,	(BertTokenizer, BertTokenizerFast))
          with tempfile.TemporaryDirectory() as tmp_dir:
               tokenizer.save_pretrained(_UpperCAmelCase)
               __A						: str      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)

          self.assertIsInstance(_UpperCAmelCase						,	tokenizer.__class__)
          self.assertEqual(tokenizera.vocab_size						,	12)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Dict      =       AutoTokenizer.from_pretrained('ctrl')
          # There is no fast CTRL so this always gives us a slow tokenizer.
          self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: int      =       get_tokenizer_config('bert-base-cased')
          __A						: Any      =       config.pop('_commit_hash'						,	_UpperCAmelCase)
          # If we ever update bert-base-cased tokenizer config, this dict here will need to be updated.
          self.assertEqual(_UpperCAmelCase						,	{'do_lower_case': False})

          # This model does not have a tokenizer_config so we get back an empty dict.
          __A						: Any      =       get_tokenizer_config(_UpperCAmelCase)
          self.assertDictEqual(_UpperCAmelCase						,	{})

          # A tokenizer saved with `save_pretrained` always creates a tokenizer config.
          __A						: str      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
          with tempfile.TemporaryDirectory() as tmp_dir:
               tokenizer.save_pretrained(_UpperCAmelCase)
               __A						: Optional[int]      =       get_tokenizer_config(_UpperCAmelCase)

          # Check the class of the tokenizer was properly saved (note that it always saves the slow class).
          self.assertEqual(config['tokenizer_class']						,	'BertTokenizer')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          try:
               AutoConfig.register('custom'						,	_UpperCAmelCase)

               AutoTokenizer.register(_UpperCAmelCase						,	slow_tokenizer_class=_UpperCAmelCase)
               # Trying to register something existing in the Transformers library will raise an error
               with self.assertRaises(_UpperCAmelCase):
                    AutoTokenizer.register(_UpperCAmelCase						,	slow_tokenizer_class=_UpperCAmelCase)

               __A						: List[Any]      =       CustomTokenizer.from_pretrained(_UpperCAmelCase)
               with tempfile.TemporaryDirectory() as tmp_dir:
                    tokenizer.save_pretrained(_UpperCAmelCase)

                    __A						: Optional[int]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
                    self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)

          finally:
               if "custom" in CONFIG_MAPPING._extra_content:
                    del CONFIG_MAPPING._extra_content["custom"]
               if CustomConfig in TOKENIZER_MAPPING._extra_content:
                    del TOKENIZER_MAPPING._extra_content[CustomConfig]


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          try:
               AutoConfig.register('custom'						,	_UpperCAmelCase)

               # Can register in two steps
               AutoTokenizer.register(_UpperCAmelCase						,	slow_tokenizer_class=_UpperCAmelCase)
               self.assertEqual(TOKENIZER_MAPPING[CustomConfig]						,	(CustomTokenizer, None))
               AutoTokenizer.register(_UpperCAmelCase						,	fast_tokenizer_class=_UpperCAmelCase)
               self.assertEqual(TOKENIZER_MAPPING[CustomConfig]						,	(CustomTokenizer, CustomTokenizerFast))

               del TOKENIZER_MAPPING._extra_content[CustomConfig]
               # Can register in one step
               AutoTokenizer.register(
                   _UpperCAmelCase						,	slow_tokenizer_class=_UpperCAmelCase						,	fast_tokenizer_class=_UpperCAmelCase)
               self.assertEqual(TOKENIZER_MAPPING[CustomConfig]						,	(CustomTokenizer, CustomTokenizerFast))

               # Trying to register something existing in the Transformers library will raise an error
               with self.assertRaises(_UpperCAmelCase):
                    AutoTokenizer.register(_UpperCAmelCase						,	fast_tokenizer_class=_UpperCAmelCase)

               # We pass through a bert tokenizer fast cause there is no converter slow to fast for our new toknizer
               # and that model does not have a tokenizer.json
               with tempfile.TemporaryDirectory() as tmp_dir:
                    __A						: List[str]      =       BertTokenizerFast.from_pretrained(_UpperCAmelCase)
                    bert_tokenizer.save_pretrained(_UpperCAmelCase)
                    __A						: List[Any]      =       CustomTokenizerFast.from_pretrained(_UpperCAmelCase)

               with tempfile.TemporaryDirectory() as tmp_dir:
                    tokenizer.save_pretrained(_UpperCAmelCase)

                    __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase)
                    self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)

                    __A						: Any      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
                    self.assertIsInstance(_UpperCAmelCase						,	_UpperCAmelCase)

          finally:
               if "custom" in CONFIG_MAPPING._extra_content:
                    del CONFIG_MAPPING._extra_content["custom"]
               if CustomConfig in TOKENIZER_MAPPING._extra_content:
                    del TOKENIZER_MAPPING._extra_content[CustomConfig]


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with self.assertRaises(_UpperCAmelCase):
               __A						: str      =       AutoTokenizer.from_pretrained('hf-internal-testing/test_dynamic_tokenizer')
          # If remote code is disabled, we can't load this config.
          with self.assertRaises(_UpperCAmelCase):
               __A						: int      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase)

          __A						: str      =       AutoTokenizer.from_pretrained('hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase)
          self.assertTrue(tokenizer.special_attribute_present)
          # Test tokenizer can be reloaded.
          with tempfile.TemporaryDirectory() as tmp_dir:
               tokenizer.save_pretrained(_UpperCAmelCase)
               __A						: Union[str, Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	trust_remote_code=_UpperCAmelCase)
          self.assertTrue(reloaded_tokenizer.special_attribute_present)

          if is_tokenizers_available():
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizerFast')
               self.assertEqual(reloaded_tokenizer.__class__.__name__						,	'NewTokenizerFast')

               # Test we can also load the slow version
               __A						: Dict      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
               self.assertTrue(tokenizer.special_attribute_present)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
               # Test tokenizer can be reloaded.
               with tempfile.TemporaryDirectory() as tmp_dir:
                    tokenizer.save_pretrained(_UpperCAmelCase)
                    __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	trust_remote_code=_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
               self.assertEqual(reloaded_tokenizer.__class__.__name__						,	'NewTokenizer')
               self.assertTrue(reloaded_tokenizer.special_attribute_present)
          else:
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
               self.assertEqual(reloaded_tokenizer.__class__.__name__						,	'NewTokenizer')


     @require_tokenizers
     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          class  SCREAMING_SNAKE_CASE    (a__							):
               lowerCAmelCase					=       False




          class  SCREAMING_SNAKE_CASE    (a__							):
               lowerCAmelCase					=       NewTokenizer
               lowerCAmelCase					=       False

          try:
               AutoConfig.register('custom'						,	_UpperCAmelCase)
               AutoTokenizer.register(_UpperCAmelCase						,	slow_tokenizer_class=_UpperCAmelCase)
               AutoTokenizer.register(_UpperCAmelCase						,	fast_tokenizer_class=_UpperCAmelCase)
               # If remote code is not set, the default is to use local
               __A						: Optional[int]      =       AutoTokenizer.from_pretrained('hf-internal-testing/test_dynamic_tokenizer')
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizerFast')
               self.assertFalse(tokenizer.special_attribute_present)
               __A						: List[Any]      =       AutoTokenizer.from_pretrained('hf-internal-testing/test_dynamic_tokenizer'						,	use_fast=_UpperCAmelCase)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
               self.assertFalse(tokenizer.special_attribute_present)

               # If remote code is disabled, we load the local one.
               __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizerFast')
               self.assertFalse(tokenizer.special_attribute_present)
               __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
               self.assertFalse(tokenizer.special_attribute_present)

               # If remote is enabled, we load from the Hub
               __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizerFast')
               self.assertTrue(tokenizer.special_attribute_present)
               __A						: str      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer'						,	trust_remote_code=_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
               self.assertTrue(tokenizer.special_attribute_present)

          finally:
               if "custom" in CONFIG_MAPPING._extra_content:
                    del CONFIG_MAPPING._extra_content["custom"]
               if CustomConfig in TOKENIZER_MAPPING._extra_content:
                    del TOKENIZER_MAPPING._extra_content[CustomConfig]


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Optional[int]      =       AutoTokenizer.from_pretrained(
              'hf-internal-testing/test_dynamic_tokenizer_legacy'						,	trust_remote_code=_UpperCAmelCase)
          self.assertTrue(tokenizer.special_attribute_present)
          if is_tokenizers_available():
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizerFast')

               # Test we can also load the slow version
               __A						: Optional[Any]      =       AutoTokenizer.from_pretrained(
                   'hf-internal-testing/test_dynamic_tokenizer_legacy'						,	trust_remote_code=_UpperCAmelCase						,	use_fast=_UpperCAmelCase)
               self.assertTrue(tokenizer.special_attribute_present)
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')
          else:
               self.assertEqual(tokenizer.__class__.__name__						,	'NewTokenizer')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with self.assertRaisesRegex(
              _UpperCAmelCase						,	'bert-base is not a local folder and is not a valid model identifier'):
               __A						: Optional[Any]      =       AutoTokenizer.from_pretrained('bert-base')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          with self.assertRaisesRegex(
              _UpperCAmelCase						,	R'aaaaaa is not a valid git identifier \(branch name, tag name or commit id\)'):
               __A						: Tuple      =       AutoTokenizer.from_pretrained(_UpperCAmelCase						,	revision='aaaaaa')


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Union[str, Any]      =       AutoTokenizer.from_pretrained('hf-internal-testing/tiny-random-bert')
          with RequestCounter() as counter:
               __A						: Any      =       AutoTokenizer.from_pretrained('hf-internal-testing/tiny-random-bert')
               self.assertEqual(counter.get_request_count						,	0)
               self.assertEqual(counter.head_request_count						,	1)
               self.assertEqual(counter.other_request_count						,	0)






'''simple docstring'''




lowercase__    :      Dict						=    {
    '''Pillow''': '''Pillow''',
    '''accelerate''': '''accelerate>=0.11.0''',
    '''compel''': '''compel==0.1.8''',
    '''black''': '''black~=23.1''',
    '''datasets''': '''datasets''',
    '''filelock''': '''filelock''',
    '''flax''': '''flax>=0.4.1''',
    '''hf-doc-builder''': '''hf-doc-builder>=0.3.0''',
    '''huggingface-hub''': '''huggingface-hub>=0.13.2''',
    '''requests-mock''': '''requests-mock==1.10.0''',
    '''importlib_metadata''': '''importlib_metadata''',
    '''invisible-watermark''': '''invisible-watermark''',
    '''isort''': '''isort>=5.5.4''',
    '''jax''': '''jax>=0.2.8,!=0.3.2''',
    '''jaxlib''': '''jaxlib>=0.1.65''',
    '''Jinja2''': '''Jinja2''',
    '''k-diffusion''': '''k-diffusion>=0.0.12''',
    '''torchsde''': '''torchsde''',
    '''note_seq''': '''note_seq''',
    '''librosa''': '''librosa''',
    '''numpy''': '''numpy''',
    '''omegaconf''': '''omegaconf''',
    '''parameterized''': '''parameterized''',
    '''protobuf''': '''protobuf>=3.20.3,<4''',
    '''pytest''': '''pytest''',
    '''pytest-timeout''': '''pytest-timeout''',
    '''pytest-xdist''': '''pytest-xdist''',
    '''ruff''': '''ruff>=0.0.241''',
    '''safetensors''': '''safetensors''',
    '''sentencepiece''': '''sentencepiece>=0.1.91,!=0.1.92''',
    '''scipy''': '''scipy''',
    '''onnx''': '''onnx''',
    '''regex''': '''regex!=2019.12.17''',
    '''requests''': '''requests''',
    '''tensorboard''': '''tensorboard''',
    '''torch''': '''torch>=1.4''',
    '''torchvision''': '''torchvision''',
    '''transformers''': '''transformers>=4.25.1''',
    '''urllib3''': '''urllib3<=2.0.0''',
}