




'''simple docstring'''







import os
import re
import shutil
import sys
import tempfile
import unittest

import black


A									=os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, 'utils'))

import check_copies  # noqa: E402


# This is the reference code that will be used in the tests.
# If BertLMPredictionHead is changed in modeling_bert.py, this code needs to be manually updated.
A									='    def __init__(self, config):\n        super().__init__()\n        self.transform = BertPredictionHeadTransform(config)\n\n        # The output weights are the same as the input embeddings, but there is\n        # an output-only bias for each token.\n        self.decoder = nn.Linear(config.hidden_size, config.vocab_size, bias=False)\n\n        self.bias = nn.Parameter(torch.zeros(config.vocab_size))\n\n        # Need a link between the two variables so that the bias is correctly resized with `resize_token_embeddings`\n        self.decoder.bias = self.bias\n\n    def forward(self, hidden_states):\n        hidden_states = self.transform(hidden_states)\n        hidden_states = self.decoder(hidden_states)\n        return hidden_states\n'


class     _a						(			unittest.TestCase				):
       def 					A   (			self		:			List[Any]       ):



           '''simple docstring'''

           UpperCAmelCase     =	tempfile.mkdtemp()
           os.makedirs(os.path.join(self.transformer_dir     ,       '''models/bert/'''       )       )
           UpperCAmelCase     =	self.transformer_dir
           shutil.copy(
               os.path.join(lowercase     ,       '''src/transformers/models/bert/modeling_bert.py'''       )     ,       os.path.join(self.transformer_dir     ,       '''models/bert/modeling_bert.py'''       )     ,       )
       def 					A   (			self		:			Optional[int]       ):



           '''simple docstring'''

           UpperCAmelCase     =	'''src/transformers'''
           shutil.rmtree(self.transformer_dir       )
       def 					A   (			self		:			str     ,       lowercase		:			int     ,       lowercase		:			Optional[int]     ,       lowercase		:			Tuple     ,       lowercase		:			Any=None       ):



           '''simple docstring'''

           UpperCAmelCase     =	comment + f"\nclass {class_name}(nn.Module):\n" + class_code
           if overwrite_result is not None:
               UpperCAmelCase     =	comment + f"\nclass {class_name}(nn.Module):\n" + overwrite_result
           UpperCAmelCase     =	black.Mode(target_versions={black.TargetVersion.PYaa}     ,       line_length=119       )
           UpperCAmelCase     =	black.format_str(lowercase     ,       mode=lowercase       )
           UpperCAmelCase     =	os.path.join(self.transformer_dir     ,       '''new_code.py'''       )
           with open(lowercase     ,       '''w'''     ,       newline='''\n'''       ) as f:
               f.write(lowercase       )
           if overwrite_result is None:
               self.assertTrue(len(check_copies.is_copy_consistent(lowercase       )       ) == 0       )
           else:
               check_copies.is_copy_consistent(f.name     ,       overwrite=lowercase       )
               with open(lowercase     ,       '''r'''       ) as f:
                   self.assertTrue(f.read()     ,       lowercase       )
       def 					A   (			self		:			int       ):



           '''simple docstring'''

           UpperCAmelCase     =	check_copies.find_code_in_transformers('''models.bert.modeling_bert.BertLMPredictionHead'''       )
           self.assertEqual(lowercase     ,       lowercase       )
       def 					A   (			self		:			Optional[Any]       ):



           '''simple docstring'''

           self.check_copy_consistency(
               '''# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead'''     ,       '''BertLMPredictionHead'''     ,       REFERENCE_CODE + '''\n'''     ,       )

           # With no empty line at the end
           self.check_copy_consistency(
               '''# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead'''     ,       '''BertLMPredictionHead'''     ,       lowercase     ,       )

           # Copy consistency with rename
           self.check_copy_consistency(
               '''# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->TestModel'''     ,       '''TestModelLMPredictionHead'''     ,       re.sub('''Bert'''     ,       '''TestModel'''     ,       lowercase       )     ,       )

           # Copy consistency with a really long name
           UpperCAmelCase     =	'''TestModelWithAReallyLongNameBecauseSomePeopleLikeThatForSomeReason'''
           self.check_copy_consistency(
               f"# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->{long_class_name}"     ,       f"{long_class_name}LMPredictionHead"     ,       re.sub('''Bert'''     ,       lowercase     ,       lowercase       )     ,       )

           # Copy consistency with overwrite
           self.check_copy_consistency(
               '''# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->TestModel'''     ,       '''TestModelLMPredictionHead'''     ,       lowercase     ,       overwrite_result=re.sub('''Bert'''     ,       '''TestModel'''     ,       lowercase       )     ,       )







       def 					A   (			self		:			int       ):



           '''simple docstring'''

           UpperCAmelCase     =	check_copies.LOCALIZED_READMES['''README_zh-hans.md''']

           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (from Google Research and the'''
               ''' Toyota Technological Institute at Chicago) released with the paper [ALBERT: A Lite BERT for'''
               ''' Self-supervised Learning of Language Representations](https://arxiv.org/abs/1909.11942), by Zhenzhong'''
               ''' Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.\n1.'''
               ''' **[DistilBERT](https://huggingface.co/transformers/model_doc/distilbert.html)** (from HuggingFace),'''
               ''' released together with the paper [DistilBERT, a distilled version of BERT: smaller, faster, cheaper and'''
               ''' lighter](https://arxiv.org/abs/1910.01108) by Victor Sanh, Lysandre Debut and Thomas Wolf. The same'''
               ''' method has been applied to compress GPT2 into'''
               ''' [DistilGPT2](https://github.com/huggingface/transformers/tree/main/examples/distillation), RoBERTa into'''
               ''' [DistilRoBERTa](https://github.com/huggingface/transformers/tree/main/examples/distillation),'''
               ''' Multilingual BERT into'''
               ''' [DistilmBERT](https://github.com/huggingface/transformers/tree/main/examples/distillation) and a German'''
               ''' version of DistilBERT.\n1. **[ELECTRA](https://huggingface.co/transformers/model_doc/electra.html)**'''
               ''' (from Google Research/Stanford University) released with the paper [ELECTRA: Pre-training text encoders'''
               ''' as discriminators rather than generators](https://arxiv.org/abs/2003.10555) by Kevin Clark, Minh-Thang'''
               ''' Luong, Quoc V. Le, Christopher D. Manning.'''
           )
           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'''
               ''' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'''
               ''' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'''
               ''' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'''
           )
           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'''
               ''' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'''
               ''' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'''
               ''' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n1.'''
               ''' **[DistilBERT](https://huggingface.co/transformers/model_doc/distilbert.html)** (来自 HuggingFace) 伴随论文'''
               ''' [DistilBERT, a distilled version of BERT: smaller, faster, cheaper and'''
               ''' lighter](https://arxiv.org/abs/1910.01108) 由 Victor Sanh, Lysandre Debut and Thomas Wolf 发布。 The same'''
               ''' method has been applied to compress GPT2 into'''
               ''' [DistilGPT2](https://github.com/huggingface/transformers/tree/main/examples/distillation), RoBERTa into'''
               ''' [DistilRoBERTa](https://github.com/huggingface/transformers/tree/main/examples/distillation),'''
               ''' Multilingual BERT into'''
               ''' [DistilmBERT](https://github.com/huggingface/transformers/tree/main/examples/distillation) and a German'''
               ''' version of DistilBERT.\n1. **[ELECTRA](https://huggingface.co/transformers/model_doc/electra.html)** (来自'''
               ''' Google Research/Stanford University) 伴随论文 [ELECTRA: Pre-training text encoders as discriminators rather'''
               ''' than generators](https://arxiv.org/abs/2003.10555) 由 Kevin Clark, Minh-Thang Luong, Quoc V. Le,'''
               ''' Christopher D. Manning 发布。\n'''
           )

           UpperCAmelCase ,  UpperCAmelCase     =	check_copies.convert_to_localized_md(
               lowercase     ,       lowercase     ,       localized_readme['''format_model_list''']       )

           self.assertFalse(lowercase       )
           self.assertEqual(lowercase     ,       lowercase       )

           UpperCAmelCase ,  UpperCAmelCase     =	check_copies.convert_to_localized_md(
               lowercase     ,       lowercase     ,       localized_readme['''format_model_list''']       )

           # Check whether the number of models is equal to README.md after conversion.
           self.assertTrue(lowercase       )

           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (from Google Research and the'''
               ''' Toyota Technological Institute at Chicago) released with the paper [ALBERT: A Lite BERT for'''
               ''' Self-supervised Learning of Language Representations](https://arxiv.org/abs/1909.11942), by Zhenzhong'''
               ''' Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.'''
           )
           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/main/model_doc/albert.html)** (来自 Google Research and'''
               ''' the Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'''
               ''' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'''
               ''' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'''
           )
           UpperCAmelCase     =	(
               '''1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'''
               ''' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'''
               ''' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'''
               ''' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'''
           )

           UpperCAmelCase ,  UpperCAmelCase     =	check_copies.convert_to_localized_md(
               lowercase     ,       lowercase     ,       localized_readme['''format_model_list''']       )

           # Check if the model link is synchronized.
           self.assertEqual(lowercase     ,       lowercase       )










'''simple docstring'''







from typing import Any


class     _a						:
       def __init__(			self		:			int     ,       lowercase		:			Any       ):



           '''simple docstring'''

           UpperCAmelCase     =	data
           UpperCAmelCase     =	None






class     _a						:
       def __init__(			self		:			int       ):



           '''simple docstring'''

           UpperCAmelCase     =	None
       def 					A   (			self		:			int       ):



           '''simple docstring'''

           UpperCAmelCase     =	self.head
           while temp is not None:
               print(temp.data     ,       end=''' '''       )
               UpperCAmelCase     =	temp.next
           print()
       def 					A   (			self		:			List[str]     ,       lowercase		:			Any       ):



           '''simple docstring'''

           UpperCAmelCase     =	Node(lowercase       )
           UpperCAmelCase     =	self.head
           UpperCAmelCase     =	new_node







       def 					A   (			self		:			List[Any]     ,       lowercase		:			List[Any]     ,       lowercase		:			str       ):



           '''simple docstring'''

           if node_data_a == node_data_a:
               return
           else:
               UpperCAmelCase     =	self.head
               while node_a is not None and node_a.data != node_data_a:
                   UpperCAmelCase     =	node_a.next

               UpperCAmelCase     =	self.head
               while node_a is not None and node_a.data != node_data_a:
                   UpperCAmelCase     =	node_a.next

               if node_a is None or node_a is None:
                   return

               UpperCAmelCase ,  UpperCAmelCase     =	node_a.data, node_a.data


if __name__ == "__main__":
   A									=LinkedList()
   for i in range(5, 0, -1):
      ll.push(i)

   ll.print_list()

   ll.swap_nodes(1, 4)
   print('After swapping')
   ll.print_list()




