from typing import Literal

UpperCAmelCase     :   str					=				'''ABCDEFGHIJKLMNOPQRSTUVWXYZ'''


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	int		,						lowercase_:	List[str]				):
       _UpperCamelCase     :       Optional[Any]  						=  LETTERS if mode == 'decrypt' else key
       _UpperCamelCase     :       Optional[int]  						=  key if mode == 'decrypt' else LETTERS
       _UpperCamelCase     :       Tuple  						=  ''
       # loop through each symbol in the message
       for symbol in message:
              if symbol.upper() in chars_a:
                     # encrypt/decrypt the symbol
                     _UpperCamelCase     :       int  						=  chars_a.find(symbol.upper()				)
                     if symbol.isupper():
                            translated += chars_b[sym_index].upper()
                     else:
                            translated += chars_b[sym_index].lower()
              else:
                     # symbol is not in LETTERS, just add it
                     translated += symbol
       return translated


def SCREAMING_SNAKE_CASE				(     lowercase_:	List[str]		,						lowercase_:	Optional[Any]				):
       return translate_message(lowercase__		,						lowercase__		,						'encrypt'				)


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	Any				):
       return translate_message(lowercase__		,						lowercase__		,						'decrypt'				)


def SCREAMING_SNAKE_CASE				(     ):
       _UpperCamelCase     :       Any  						=  'Hello World'
       _UpperCamelCase     :       Tuple  						=  'QWERTYUIOPASDFGHJKLZXCVBNM'
       _UpperCamelCase     :       Optional[int]  						=  'decrypt'  # set to 'encrypt' or 'decrypt'

       if mode == "encrypt":
              _UpperCamelCase     :       str  						=  encrypt_message(lowercase__		,						lowercase__				)
       elif mode == "decrypt":
              _UpperCamelCase     :       Optional[int]  						=  decrypt_message(lowercase__		,						lowercase__				)
       print(F"Using the key {key}, the {mode}ed message is: {translated}"				)


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 main()




import argparse
import json
import re
import string
import sys
from collections import Counter


def SCREAMING_SNAKE_CASE				(     lowercase_:	List[Any]				):

       def remove_articles(lowercase_:	Dict				):
              return re.sub(R'\b(a|an|the)\b'		,						' '		,						lowercase_				)

       def white_space_fix(lowercase_:	Optional[Any]				):
              return " ".join(text.split()				)

       def remove_punc(lowercase_:	List[str]				):
              _UpperCamelCase     :       str  						=  set(string.punctuation				)
              return "".join(ch for ch in text if ch not in exclude				)

       def lower(lowercase_:	List[str]				):
              return text.lower()

       return white_space_fix(remove_articles(remove_punc(lower(lowercase_				)				)				)				)


def SCREAMING_SNAKE_CASE				(     lowercase_:	List[Any]		,						lowercase_:	Tuple				):
       _UpperCamelCase     :       int  						=  normalize_answer(lowercase_				).split()
       _UpperCamelCase     :       int  						=  normalize_answer(lowercase_				).split()
       _UpperCamelCase     :       Union[str, Any]  						=  Counter(lowercase_				) & Counter(lowercase_				)
       _UpperCamelCase     :       Optional[int]  						=  sum(common.values()				)
       if num_same == 0:
              return 0
       _UpperCamelCase     :       Optional[Any]  						=  1.0 * num_same / len(lowercase_				)
       _UpperCamelCase     :       Optional[int]  						=  1.0 * num_same / len(lowercase_				)
       _UpperCamelCase     :       List[str]  						=  (2 * precision * recall) / (precision + recall)
       return fa


def SCREAMING_SNAKE_CASE				(     lowercase_:	str		,						lowercase_:	Union[str, Any]				):
       return normalize_answer(lowercase_				) == normalize_answer(lowercase_				)


def SCREAMING_SNAKE_CASE				(     lowercase_:	Optional[int]		,						lowercase_:	int		,						lowercase_:	Union[str, Any]				):
       _UpperCamelCase     :       Any  						=  []
       for ground_truth in ground_truths:
              _UpperCamelCase     :       Optional[Any]  						=  metric_fn(lowercase_		,						lowercase_				)
              scores_for_ground_truths.append(lowercase_				)
       return max(lowercase_				)


def SCREAMING_SNAKE_CASE				(     lowercase_:	Union[str, Any]		,						lowercase_:	List[Any]				):
       _UpperCamelCase     :       List[Any]  						=  0
       for article in dataset:
              for paragraph in article["paragraphs"]:
                     for qa in paragraph["qas"]:
                            total += 1
                            if qa["id"] not in predictions:
                                   _UpperCamelCase     :       Union[str, Any]  						=  'Unanswered question ' + qa['id'] + ' will receive score 0.'
                                   print(lowercase_		,						file=sys.stderr				)
                                   continue
                            _UpperCamelCase     :       Dict  						=  [x['text'] for x in qa['answers']]
                            _UpperCamelCase     :       List[str]  						=  predictions[qa['id']]
                            exact_match += metric_max_over_ground_truths(lowercase_		,						lowercase_		,						lowercase_				)
                            fa += metric_max_over_ground_truths(lowercase_		,						lowercase_		,						lowercase_				)

       _UpperCamelCase     :       Dict  						=  100.0 * exact_match / total
       _UpperCamelCase     :       Optional[Any]  						=  100.0 * fa / total

       return {"exact_match": exact_match, "f1": fa}


if __name__ == "__main__":
 UpperCAmelCase					=				'''1.1'''
 UpperCAmelCase					=				argparse.ArgumentParser(description='''Evaluation for SQuAD ''' + expected_version)
 parser.add_argument('''dataset_file''', help='''Dataset file''')
 parser.add_argument('''prediction_file''', help='''Prediction File''')
 UpperCAmelCase					=				parser.parse_args()
 with open(args.dataset_file) as dataset_file:
  UpperCAmelCase					=				json.load(dataset_file)
  if dataset_json["version"] != expected_version:
   print(
       '''Evaluation expects v-''' + expected_version + ''', but got dataset with v-''' + dataset_json['''version'''],
       file=sys.stderr,
   )
  UpperCAmelCase					=				dataset_json['''data''']
 with open(args.prediction_file) as prediction_file:
  UpperCAmelCase					=				json.load(prediction_file)
 print(json.dumps(evaluate(dataset, predictions)))



