






"""simple docstring"""





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		):






    @slow
    def        UpperCamelCase	(	self					:							Union[str, Any] )					->		List[Any]:
      lowerCamelCase_   					=						XLMProphetNetForConditionalGeneration.from_pretrained('microsoft/xprophetnet-large-wiki100-cased' )
      model.to(__SCREAMING_SNAKE_CASE )

      # encoder-decoder outputs
      lowerCamelCase_   					=						torch.tensor([[17, 96208, 103471, 2]] ).to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						torch.tensor(
          [[2, 250, 9953, 34, 69489, 1620, 32, 118424, 624, 210, 105, 2913, 1032, 351]] ).to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						model(
          input_ids=__SCREAMING_SNAKE_CASE	,						attention_mask=__SCREAMING_SNAKE_CASE	,						encoder_outputs=__SCREAMING_SNAKE_CASE	,						decoder_input_ids=__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						output[0]
      lowerCamelCase_   					=						torch.Size((1, 14, 250012) )
      self.assertEqual(output_predited_logis.shape	,						__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						torch.tensor(
          [[[-6.3_986, -8.2_391, 12.5_189], [-6.3_289, -8.0_864, 12.6_211], [-6.2_418, -8.0_445, 12.7_968]]] ).to(__SCREAMING_SNAKE_CASE )
      self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]	,						__SCREAMING_SNAKE_CASE	,						atol=1e-4 ) )

      # encoder outputs
      lowerCamelCase_   					=						model.prophetnet.encoder(__SCREAMING_SNAKE_CASE )[0]
      lowerCamelCase_   					=						torch.tensor(
          [[[-1.4_260, -0.7_628, 0.8_453], [-1.4_719, -0.1_391, 0.7_807], [-1.7_678, 0.0_114, 0.4_646]]] ).to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						torch.Size((1, 4, 1024) )
      self.assertEqual(encoder_outputs.shape	,						__SCREAMING_SNAKE_CASE )
      self.assertTrue(torch.allclose(encoder_outputs[:, :3, :3]	,						__SCREAMING_SNAKE_CASE	,						atol=1e-4 ) )

      # decoder outputs
      lowerCamelCase_   					=						model.prophetnet.decoder(
          __SCREAMING_SNAKE_CASE	,						encoder_hidden_states=__SCREAMING_SNAKE_CASE	,						)
      lowerCamelCase_   					=						decoder_outputs[1].view(1	,						model.config.ngram	,						14	,						-1 )
      lowerCamelCase_   					=						model.lm_head(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						predicting_streams_logits[:, 0]
      self.assertTrue(torch.allclose(next_first_stream_logits[:, :3, :3]	,						__SCREAMING_SNAKE_CASE	,						atol=1e-4 ) )






    @slow
    def        UpperCamelCase	(	self					:							Optional[Any] )					->		str:
      lowerCamelCase_   					=						XLMProphetNetForConditionalGeneration.from_pretrained(
          'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg' )
      model.to(__SCREAMING_SNAKE_CASE )

      lowerCamelCase_   					=						torch.tensor([[17, 96208, 103471, 2]] ).to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						torch.tensor(
          [[2, 250, 9953, 34, 69489, 1620, 32, 118424, 624, 210, 105, 2913, 1032, 351]] ).to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						model(
          input_ids=__SCREAMING_SNAKE_CASE	,						attention_mask=__SCREAMING_SNAKE_CASE	,						encoder_outputs=__SCREAMING_SNAKE_CASE	,						decoder_input_ids=__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						output[0]
      lowerCamelCase_   					=						torch.Size((1, 14, 250012) )
      self.assertEqual(output_predited_logis.shape	,						__SCREAMING_SNAKE_CASE )
      # compare the actual values for a slice.
      lowerCamelCase_   					=						torch.tensor(
          [[[-9.2_253, -9.7_173, -6.3_529], [-7.6_701, -9.0_145, -1.9_382], [-8.0_195, -7.0_004, -0.1_523]]] ).to(__SCREAMING_SNAKE_CASE )

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






    @slow
    def        UpperCamelCase	(	self					:							Optional[int] )					->		str:
      lowerCamelCase_   					=						XLMProphetNetForConditionalGeneration.from_pretrained(
          'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg' )
      model.to(__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						512

      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=__SCREAMING_SNAKE_CASE	,						max_length=255	,						return_tensors='pt' ).input_ids
      lowerCamelCase_   					=						input_ids.to(__SCREAMING_SNAKE_CASE )

      lowerCamelCase_   					=						model.generate(
          __SCREAMING_SNAKE_CASE	,						num_beams=10	,						length_penalty=1.0	,						no_repeat_ngram_size=3	,						early_stopping=__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						[tokenizer.decode(__SCREAMING_SNAKE_CASE	,						skip_special_tokens=__SCREAMING_SNAKE_CASE ) 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]	,						__SCREAMING_SNAKE_CASE	,						)

      lowerCamelCase_   					=						model.generate(
          __SCREAMING_SNAKE_CASE	,						num_beams=1	,						length_penalty=1.0	,						no_repeat_ngram_size=3	,						early_stopping=__SCREAMING_SNAKE_CASE )
      lowerCamelCase_   					=						[
          tokenizer.convert_ids_to_tokens(__SCREAMING_SNAKE_CASE	,						skip_special_tokens=__SCREAMING_SNAKE_CASE ) 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]	,						__SCREAMING_SNAKE_CASE	,						)












"""simple docstring"""





def 					lowerCamelCase__	(							_lowerCamelCase	:		int = 1000			)				->    int:
  lowerCamelCase_   					=						0
  lowerCamelCase_   					=						(n - 1) // 3
  total += ((terms) * (6 + (terms - 1) * 3)) // 2  # total of an A.P.
  lowerCamelCase_   					=						(n - 1) // 5
  total += ((terms) * (10 + (terms - 1) * 5)) // 2
  lowerCamelCase_   					=						(n - 1) // 15
  total -= ((terms) * (30 + (terms - 1) * 15)) // 2
  return total


if __name__ == "__main__":
  print(F'''{solution() = }''')




