






"""simple docstring"""



import argparse
from pathlib import Path

import torch

from transformers import OPTConfig, OPTModel
from transformers.utils import logging


logging.set_verbosity_info()
_UpperCamelCase		:  Any						=		logging.get_logger(__name__)
def 						_SCREAMING_SNAKE_CASE (    __snake_case			:  int    ):





  '''simple docstring'''





  lowercase							    =       torch.load(__snake_case		,					map_location='cpu'    )
  if "model" in sd.keys():
    lowercase							    =       torch.load(__snake_case		,					map_location='cpu'    )['model']

  # pop unnecessary weights
  lowercase							    =       [
      'decoder.version',
      'decoder.output_projection.weight',
  ]
  for key in keys_to_delete:
    if key in sd:
      sd.pop(__snake_case    )

  lowercase							    =       {
      'decoder.project_in_dim.weight': 'decoder.project_in.weight',
      'decoder.project_out_dim.weight': 'decoder.project_out.weight',
      'decoder.layer_norm.weight': 'decoder.final_layer_norm.weight',
      'decoder.layer_norm.bias': 'decoder.final_layer_norm.bias',
  }
  for old_key, new_key in keys_to_rename.items():
    if old_key in sd:
      lowercase							    =       sd.pop(__snake_case    )

  lowercase							    =       list(sd.keys()    )
  for key in keys:
    if ".qkv_proj." in key:
      lowercase							    =       sd[key]
      # We split QKV in separate Q,K,V

      lowercase							    =       key.replace('.qkv_proj.'		,					'.q_proj.'    )
      lowercase							    =       key.replace('.qkv_proj.'		,					'.k_proj.'    )
      lowercase							    =       key.replace('.qkv_proj.'		,					'.v_proj.'    )

      lowercase							    =       value.shape[0]
      assert depth % 3 == 0
      # `SequeuceParallelTransformerBlock` has QKV weight is separated in K,V,Q despite the naming:
      # https://cs.github.com/facebookresearch/metaseq/blob/51871bd73cd04c038f239ea2a26db1d7f6b37927/metaseq/modules/sequence_parallel_transformer_layer.py#L97
      lowercase    ,     lowercase    ,     lowercase							    =       torch.split(__snake_case		,					depth // 3		,					dim=0    )

      lowercase							    =       q
      lowercase							    =       k
      lowercase							    =       v
      del sd[key]

  return sd
@torch.no_grad()
def 						_SCREAMING_SNAKE_CASE (    __snake_case			:  int		,					__snake_case			:  Optional[int]		,					__snake_case			:  Optional[Any]=None    ):





  '''simple docstring'''





  lowercase							    =       load_checkpoint(__snake_case    )

  if config is not None:
    lowercase							    =       OPTConfig.from_pretrained(__snake_case    )
  else:
    lowercase							    =       OPTConfig()

  lowercase							    =       OPTModel(__snake_case    ).half().eval()
  model.load_state_dict(__snake_case    )

  # Check results
  Path(__snake_case    ).mkdir(exist_ok=__snake_case    )
  model.save_pretrained(__snake_case    )


if __name__ == "__main__":
    _UpperCamelCase		:  List[str]						=		argparse.ArgumentParser()
    # Required parameters
    parser.add_argument(
        '--fairseq_path',
        type=str,
        help=(
            'path to fairseq checkpoint in correct format. You can find all checkpoints in the correct format here:'
            ' https://huggingface.co/models?other=opt_metasq'
        ),
    )
    parser.add_argument('--pytorch_dump_folder_path', default=None, type=str, help='Path to the output PyTorch model.')
    parser.add_argument('--hf_config', default=None, type=str, help='Define HF config.')
    _UpperCamelCase		:  Tuple						=		parser.parse_args()
    convert_opt_checkpoint(args.fairseq_path, args.pytorch_dump_folder_path, config=args.hf_config)










"""simple docstring"""



import requests
from bsa import BeautifulSoup
def 						_SCREAMING_SNAKE_CASE (    __snake_case			:  str = "AAPL"    ):





  '''simple docstring'''





  lowercase							    =       f'https://in.finance.yahoo.com/quote/{symbol}?s={symbol}'
  lowercase							    =       BeautifulSoup(requests.get(__snake_case    ).text		,					'html.parser'    )
  lowercase							    =       'My(6px) Pos(r) smartphone_Mt(6px)'
  return soup.find('div'		,					class_=class_    ).find('span'    ).text


if __name__ == "__main__":
    for symbol in "AAPL AMZN IBM GOOG MSFT ORCL".split():
        print(F'''Current {symbol:<4} stock price is {stock_price(symbol):>8}''')


