
import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch, slow, torch_device


if is_torch_available():
      import torch

      from transformers import XLMProphetNetForConditionalGeneration, XLMProphetNetTokenizer






@require_torch
class 			A			(		unittest.TestCase		):
     """simple docstring"""

     @slow
     def  __snake_case   (    self  :   Tuple			)				->       str:
           lowerCamelCase__        =				XLMProphetNetForConditionalGeneration.from_pretrained('microsoft/xprophetnet-large-wiki100-cased'			)
           model.to(A__			)

           # encoder-decoder outputs
           lowerCamelCase__        =				torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]			).to(A__			)
           lowerCamelCase__        =				torch.tensor(
               [[2, 2_5_0, 9_9_5_3, 3_4, 6_9_4_8_9, 1_6_2_0, 3_2, 1_1_8_4_2_4, 6_2_4, 2_1_0, 1_0_5, 2_9_1_3, 1_0_3_2, 3_5_1]]			).to(A__			)
           lowerCamelCase__        =				model(
               input_ids=A__	,  attention_mask=A__	,  encoder_outputs=A__	,  decoder_input_ids=A__			)
           lowerCamelCase__        =				output[0]
           lowerCamelCase__        =				torch.Size((1, 1_4, 2_5_0_0_1_2)			)
           self.assertEqual(output_predited_logis.shape	,  A__			)
           lowerCamelCase__        =				torch.tensor(
               [[[-6.3986, -8.2391, 12.5189], [-6.3289, -8.0864, 12.6211], [-6.2418, -8.0445, 12.7968]]]			).to(A__			)
           self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]	,  A__	,  atol=1E-4			)			)

           # encoder outputs
           lowerCamelCase__        =				model.prophetnet.encoder(A__			)[0]
           lowerCamelCase__        =				torch.tensor(
               [[[-1.4260, -0.7628, 0.8453], [-1.4719, -0.1391, 0.7807], [-1.7678, 0.0114, 0.4646]]]			).to(A__			)
           lowerCamelCase__        =				torch.Size((1, 4, 1_0_2_4)			)
           self.assertEqual(encoder_outputs.shape	,  A__			)
           self.assertTrue(torch.allclose(encoder_outputs[:, :3, :3]	,  A__	,  atol=1E-4			)			)

           # decoder outputs
           lowerCamelCase__        =				model.prophetnet.decoder(
               A__	,  encoder_hidden_states=A__	,  )
           lowerCamelCase__        =				decoder_outputs[1].view(1	,  model.config.ngram	,  1_4	,  -1			)
           lowerCamelCase__        =				model.lm_head(A__			)
           lowerCamelCase__        =				predicting_streams_logits[:, 0]
           self.assertTrue(torch.allclose(next_first_stream_logits[:, :3, :3]	,  A__	,  atol=1E-4			)			)




     @slow
     def  __snake_case   (    self  :   List[Any]			)				->       List[Any]:
           lowerCamelCase__        =				XLMProphetNetForConditionalGeneration.from_pretrained(
               'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'			)
           model.to(A__			)

           lowerCamelCase__        =				torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]			).to(A__			)
           lowerCamelCase__        =				torch.tensor(
               [[2, 2_5_0, 9_9_5_3, 3_4, 6_9_4_8_9, 1_6_2_0, 3_2, 1_1_8_4_2_4, 6_2_4, 2_1_0, 1_0_5, 2_9_1_3, 1_0_3_2, 3_5_1]]			).to(A__			)
           lowerCamelCase__        =				model(
               input_ids=A__	,  attention_mask=A__	,  encoder_outputs=A__	,  decoder_input_ids=A__			)
           lowerCamelCase__        =				output[0]
           lowerCamelCase__        =				torch.Size((1, 1_4, 2_5_0_0_1_2)			)
           self.assertEqual(output_predited_logis.shape	,  A__			)
           # compare the actual values for a slice.
           lowerCamelCase__        =				torch.tensor(
               [[[-9.2253, -9.7173, -6.3529], [-7.6701, -9.0145, -1.9382], [-8.0195, -7.0004, -0.1523]]]			).to(A__			)

           self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]	,  A__	,  atol=1E-4			)			)




     @slow
     def  __snake_case   (    self  :   Any			)				->       Union[str, Any]:
           lowerCamelCase__        =				XLMProphetNetForConditionalGeneration.from_pretrained(
               'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'			)
           model.to(A__			)
           lowerCamelCase__        =				5_1_2

           lowerCamelCase__        =				XLMProphetNetTokenizer.from_pretrained('microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'			)

           lowerCamelCase__        =				(
               'Microsoft Corporation intends to officially end free support for the Windows 7 operating system after'
               ' January 14, 2020, according to the official portal of the organization. From that day, users of this'
               ' system will not be able to receive security updates, which could make their computers vulnerable to'
               ' cyber attacks.'
           )
           lowerCamelCase__        =				(
               'орпорация Microsoft намерена официально прекратить бесплатную поддержку операционной системы Windows 7'
               ' после 14 января 2020 года, сообщается на официальном портале организации . С указанного дня пользователи'
               ' этой системы не смогут получать обновления безопасности, из-за чего их компьютеры могут стать уязвимыми'
               ' к кибератакам.'
           )
           lowerCamelCase__        =				(
               '根据该组织的官方门户网站，微软公司打算在2020年1月14日之后正式终止对Windows 7操作系统的免费支持。从那时起，该系统的用户将无法接收安全更新，这可能会使他们的计算机容易受到网络攻击。'
           )

           lowerCamelCase__        =				tokenizer(
               [EN_SENTENCE, RU_SENTENCE, ZH_SENTENCE]	,  padding=A__	,  max_length=2_5_5	,  return_tensors='pt'			).input_ids
           lowerCamelCase__        =				input_ids.to(A__			)

           lowerCamelCase__        =				model.generate(
               A__	,  num_beams=1_0	,  length_penalty=1.0	,  no_repeat_ngram_size=3	,  early_stopping=A__			)
           lowerCamelCase__        =				[tokenizer.decode(A__	,  skip_special_tokens=A__			) for g in summary_ids]
           lowerCamelCase__        =				'Microsoft to end Windows 7 free support after January 14, 2020'
           lowerCamelCase__        =				'Microsoft намерена прекратить бесплатную поддержку Windows 7 после 14 января 2020 года'
           lowerCamelCase__        =				'微软打算终止对Windows 7操作系统的免费支持'
           self.assertListEqual(
               [EXPECTED_TITLE_EN, EXPECTED_TITLE_RU, EXPECTED_TITLE_ZH]	,  A__	,  )

           lowerCamelCase__        =				model.generate(
               A__	,  num_beams=1	,  length_penalty=1.0	,  no_repeat_ngram_size=3	,  early_stopping=A__			)
           lowerCamelCase__        =				[
               tokenizer.convert_ids_to_tokens(A__	,  skip_special_tokens=A__			) for g in summary_ids_beama
           ]
           lowerCamelCase__        =				'▁Microsoft ▁to ▁end ▁free ▁support ▁for ▁Windows ▁7'.split(' '			)
           lowerCamelCase__        =				'▁Microsoft ▁намерен а ▁прекрати ть ▁бес плат ную ▁поддержку ▁Windows ▁7 ▁после ▁14 ▁января ▁2020 ▁года'.split(
               ' '			)
           lowerCamelCase__        =				'微软 公司 打算 终止 对 Windows ▁7 操作 系统的 免费 支持'.split(' '			)
           self.assertListEqual(
               [EXPECTED_TITLE_EN_BEAM1_TOK, EXPECTED_TITLE_RU_BEAM1_TOK, EXPECTED_TITLE_ZH_BEAM1_TOK]	,  A__	,  )





import shutil

import requests

def 			lowerCAmelCase_			(  lowerCamelCase:       str     ,				lowerCamelCase:       bool = False     ,				lowerCamelCase:       str = "."						)					->			dict:


      '''simple docstring'''




      lowerCamelCase__        =				'https://api.nasa.gov/planetary/apod'
      return requests.get(lowerCamelCase     ,				params={'api_key': api_key}						).json()

def 			lowerCAmelCase_			(  lowerCamelCase:       str     ,				lowerCamelCase:       str = "."						)					->			dict:


      '''simple docstring'''




      lowerCamelCase__        =				get_apod_data(lowerCamelCase						)
      lowerCamelCase__        =				apod_data['url']
      lowerCamelCase__        =				img_url.split('/'						)[-1]
      lowerCamelCase__        =				requests.get(lowerCamelCase     ,				stream=lowerCamelCase						)

      with open(f"""{path}/{img_name}"""     ,				'wb+'						) as img_file:
            shutil.copyfileobj(response.raw     ,				lowerCamelCase						)
      del response
      return apod_data

def 			lowerCAmelCase_			(  lowerCamelCase:       str						)					->			dict:


      '''simple docstring'''




      lowerCamelCase__        =				'https://images-api.nasa.gov/search'
      return requests.get(lowerCamelCase     ,				params={'q': query}						).json()


if __name__ == "__main__":
      print(save_apod("""YOUR API KEY"""))
      __SCREAMING_SNAKE_CASE    :   Tuple       =get_archive_data("""apollo 2011""")["""collection"""]["""items"""]
      print(apollo_aaaa_items[0]["""data"""][0]["""description"""])