


'''simple docstring'''

import copy
import json
import os
import tempfile

from transformers import is_torch_available

from .test_configuration_utils import config_common_kwargs





class 						__SCREAMING_SNAKE_CASE					(      lowerCamelCase__ ):






     def __init__(			self     ,							__UpperCamelCase     ,							__UpperCamelCase=None     ,							__UpperCamelCase=True     ,							__UpperCamelCase=None     ,							**__UpperCamelCase		)       ->    List[str]:
          _a						=		parent
          _a						=		config_class
          _a						=		has_text_modality
          _a						=		kwargs
          _a						=		common_properties






     def  a_					(			self		)       ->    str:
          _a						=		self.config_class(**self.inputs_dict		)
          _a						=		(
              ["hidden_size", "num_attention_heads", "num_hidden_layers"]
              if self.common_properties is None
              else self.common_properties
          )

          # Add common fields for text models
          if self.has_text_modality:
               common_properties.extend(["vocab_size"]		)

          # Test that config has the common properties as getters
          for prop in common_properties:
               self.parent.assertTrue(hasattr(__UpperCamelCase     ,							__UpperCamelCase		)     ,							msg=f"`{prop}` does not exist"		)

          # Test that config has the common properties as setter
          for idx, name in enumerate(__UpperCamelCase		):
               try:
                    setattr(__UpperCamelCase     ,							__UpperCamelCase     ,							__UpperCamelCase		)
                    self.parent.assertEqual(
                        getattr(__UpperCamelCase     ,							__UpperCamelCase		)     ,							__UpperCamelCase     ,							msg=f"`{name} value {idx} expected, but was {getattr(__UpperCamelCase     ,							__UpperCamelCase		)}"		)
               except NotImplementedError:
                    # Some models might not be able to implement setters for common_properties
                    # In that case, a NotImplementedError is raised
                    pass

        # Test if config class can be called with Config(prop_name=..)
          for idx, name in enumerate(__UpperCamelCase		):
               try:
                    _a						=		self.config_class(**{name: idx}		)
                    self.parent.assertEqual(
                        getattr(__UpperCamelCase     ,							__UpperCamelCase		)     ,							__UpperCamelCase     ,							msg=f"`{name} value {idx} expected, but was {getattr(__UpperCamelCase     ,							__UpperCamelCase		)}"		)
               except NotImplementedError:
                    # Some models might not be able to implement setters for common_properties
                    # In that case, a NotImplementedError is raised
                    pass






     def  a_					(			self		)       ->    int:
          _a						=		self.config_class(**self.inputs_dict		)
          _a						=		json.loads(config.to_json_string()		)
          for key, value in self.inputs_dict.items():
               self.parent.assertEqual(obj[key]     ,							__UpperCamelCase		)






     def  a_					(			self		)       ->    Optional[Any]:
          _a						=		self.config_class(**self.inputs_dict		)

          with tempfile.TemporaryDirectory() as tmpdirname:
               _a						=		os.path.join(__UpperCamelCase     ,							"config.json"		)
               config_first.to_json_file(__UpperCamelCase		)
               _a						=		self.config_class.from_json_file(__UpperCamelCase		)

          self.parent.assertEqual(config_second.to_dict()     ,							config_first.to_dict()		)






     def  a_					(			self		)       ->    Any:
          _a						=		self.config_class(**self.inputs_dict		)

          with tempfile.TemporaryDirectory() as tmpdirname:
               config_first.save_pretrained(__UpperCamelCase		)
               _a						=		self.config_class.from_pretrained(__UpperCamelCase		)

          self.parent.assertEqual(config_second.to_dict()     ,							config_first.to_dict()		)






     def  a_					(			self		)       ->    str:
          _a						=		self.config_class(**self.inputs_dict		)

          _a						=		"test"
          with tempfile.TemporaryDirectory() as tmpdirname:
               _a						=		os.path.join(__UpperCamelCase     ,							__UpperCamelCase		)
               config_first.save_pretrained(__UpperCamelCase		)
               _a						=		self.config_class.from_pretrained(__UpperCamelCase     ,							subfolder=__UpperCamelCase		)

          self.parent.assertEqual(config_second.to_dict()     ,							config_first.to_dict()		)






     def  a_					(			self		)       ->    Optional[Any]:
          _a						=		self.config_class(**self.inputs_dict     ,							num_labels=5		)
          self.parent.assertEqual(len(config.idalabel		)     ,							5		)
          self.parent.assertEqual(len(config.labelaid		)     ,							5		)

          _a						=		3
          self.parent.assertEqual(len(config.idalabel		)     ,							3		)
          self.parent.assertEqual(len(config.labelaid		)     ,							3		)






     def  a_					(			self		)       ->    str:
          if self.config_class.is_composition:
               return
          _a						=		self.config_class()
          self.parent.assertIsNotNone(__UpperCamelCase		)






     def  a_					(			self		)       ->    int:
          _a						=		copy.deepcopy(__UpperCamelCase		)
          _a						=		self.config_class(**__UpperCamelCase		)
          _a						=		[]
          for key, value in config_common_kwargs.items():
               if key == "torch_dtype":
                    if not is_torch_available():
                         continue
                    else:
                         import torch

                         if config.torch_dtype != torch.floataa:
                              wrong_values.append(("torch_dtype", config.torch_dtype, torch.floataa)		)
               elif getattr(__UpperCamelCase     ,							__UpperCamelCase		) != value:
                    wrong_values.append((key, getattr(__UpperCamelCase     ,							__UpperCamelCase		), value)		)

          if len(__UpperCamelCase		) > 0:
               _a						=		"\n".join([f"- {v[0]}: got {v[1]} instead of {v[2]}" for v in wrong_values]		)
               raise ValueError(f"The following keys were not properly set in the config:\n{errors}"		)






     def  a_					(			self		)       ->    int:
          self.create_and_test_config_common_properties()
          self.create_and_test_config_to_json_string()
          self.create_and_test_config_to_json_file()
          self.create_and_test_config_from_and_save_pretrained()
          self.create_and_test_config_from_and_save_pretrained_subfolder()
          self.create_and_test_config_with_num_labels()
          self.check_config_can_be_init_without_params()
          self.check_config_arguments_init()





'''simple docstring'''

lowercase__				     =		65_521






def __UpperCamelCase   (			__lowerCamelCase		: str				)      ->     int:







     '''simple docstring'''






     _a						=		1
     _a						=		0
     for plain_chr in plain_text:
          _a						=		(a + ord(__lowerCamelCase				)) % MOD_ADLER
          _a						=		(b + a) % MOD_ADLER
     return (b << 16) | a

