





"""simple docstring"""






import argparse

import pytorch_lightning as pl
import torch
from torch import nn

from transformers import LongformerForQuestionAnswering, LongformerModel




class 				__lowercase			(			pl.LightningModule							):







					'''simple docstring'''




					def __init__(						self	,			_UpperCAmelCase     ):
									super().__init__()
									__a :						str			       =  model
									__a :						int			       =  2
									__a :						Optional[int]			       =  nn.Linear(self.model.config.hidden_size	,			self.num_labels     )







					def  _lowerCamelCase		(						self     ):
									pass






def     __A      (			a_						:str   ,       a_						:str   ,       a_						:str)		->		Union[str, Any]:
				# load longformer model from model identifier
				__a :						str			       =  LongformerModel.from_pretrained(a_)
				__a :						Union[str, Any]			       =  LightningModel(a_)

				__a :						int			       =  torch.load(a_   ,       map_location=torch.device('''cpu'''))
				lightning_model.load_state_dict(ckpt['''state_dict'''])

				# init longformer question answering model
				__a :						Union[str, Any]			       =  LongformerForQuestionAnswering.from_pretrained(a_)

				# transfer weights
				longformer_for_qa.longformer.load_state_dict(lightning_model.model.state_dict())
				longformer_for_qa.qa_outputs.load_state_dict(lightning_model.qa_outputs.state_dict())
				longformer_for_qa.eval()

				# save model
				longformer_for_qa.save_pretrained(a_)

				print(F"""Conversion successful. Model saved under {pytorch_dump_folder_path}""")


if __name__ == "__main__":
		A 			=  argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    '''--longformer_model''',
		    default=None,
		    type=str,
		    required=True,
		    help='''model identifier of longformer. Should be either `longformer-base-4096` or `longformer-large-4096`.''',
		)
		parser.add_argument(
		    '''--longformer_question_answering_ckpt_path''',
		    default=None,
		    type=str,
		    required=True,
		    help='''Path the official PyTorch Lightning Checkpoint.''',
		)
		parser.add_argument(
		    '''--pytorch_dump_folder_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
		)
		A 			=  parser.parse_args()
		convert_longformer_qa_checkpoint_to_pytorch(
		    args.longformer_model, args.longformer_question_answering_ckpt_path, args.pytorch_dump_folder_path
		)






"""simple docstring"""






def     __A      (			a_						:float   ,       a_						:float)		->		float:
				return price * (1 + tax_rate)


if __name__ == "__main__":
		print(F'{price_plus_tax(100, 0.25) = }')
		print(F'{price_plus_tax(125.50, 0.05) = }')