




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




				'''simple docstring'''





				@slow
				def 	a_	(self      )     ->	Optional[Any]:
							__UpperCamelCase				:      int									=       XLMProphetNetForConditionalGeneration.from_pretrained("microsoft/xprophetnet-large-wiki100-cased"      )
							model.to(_UpperCAmelCase      )

							# encoder-decoder outputs
							__UpperCamelCase				:      Optional[Any]									=       torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(_UpperCAmelCase      )
							__UpperCamelCase				:      Optional[int]									=       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(_UpperCAmelCase      )
							__UpperCamelCase				:      List[str]									=       model(
							    input_ids=_UpperCAmelCase			,  attention_mask=_UpperCAmelCase			,  encoder_outputs=_UpperCAmelCase			,  decoder_input_ids=_UpperCAmelCase      )
							__UpperCamelCase				:      Optional[Any]									=       output[0]
							__UpperCamelCase				:      int									=       torch.Size((1, 1_4, 2_5_0_0_1_2)      )
							self.assertEqual(output_predited_logis.shape			,  _UpperCAmelCase      )
							__UpperCamelCase				:      List[str]									=       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(_UpperCAmelCase      )
							self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]			,  _UpperCAmelCase			,  atol=1E-4      )      )

							# encoder outputs
							__UpperCamelCase				:      int									=       model.prophetnet.encoder(_UpperCAmelCase      )[0]
							__UpperCamelCase				:      Optional[int]									=       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(_UpperCAmelCase      )
							__UpperCamelCase				:      int									=       torch.Size((1, 4, 1_0_2_4)      )
							self.assertEqual(encoder_outputs.shape			,  _UpperCAmelCase      )
							self.assertTrue(torch.allclose(encoder_outputs[:, :3, :3]			,  _UpperCAmelCase			,  atol=1E-4      )      )

							# decoder outputs
							__UpperCamelCase				:      Optional[Any]									=       model.prophetnet.decoder(
							    _UpperCAmelCase			,  encoder_hidden_states=_UpperCAmelCase			,  )
							__UpperCamelCase				:      Union[str, Any]									=       decoder_outputs[1].view(1			,  model.config.ngram			,  1_4			,  -1      )
							__UpperCamelCase				:      Any									=       model.lm_head(_UpperCAmelCase      )
							__UpperCamelCase				:      List[Any]									=       predicting_streams_logits[:, 0]
							self.assertTrue(torch.allclose(next_first_stream_logits[:, :3, :3]			,  _UpperCAmelCase			,  atol=1E-4      )      )
				@slow
				def 	a_	(self      )     ->	Union[str, Any]:
							__UpperCamelCase				:      str									=       XLMProphetNetForConditionalGeneration.from_pretrained(
							    "microsoft/xprophetnet-large-wiki100-cased-xglue-ntg"      )
							model.to(_UpperCAmelCase      )

							__UpperCamelCase				:      int									=       torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(_UpperCAmelCase      )
							__UpperCamelCase				:      List[str]									=       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(_UpperCAmelCase      )
							__UpperCamelCase				:      int									=       model(
							    input_ids=_UpperCAmelCase			,  attention_mask=_UpperCAmelCase			,  encoder_outputs=_UpperCAmelCase			,  decoder_input_ids=_UpperCAmelCase      )
							__UpperCamelCase				:      Optional[Any]									=       output[0]
							__UpperCamelCase				:      Dict									=       torch.Size((1, 1_4, 2_5_0_0_1_2)      )
							self.assertEqual(output_predited_logis.shape			,  _UpperCAmelCase      )
							# compare the actual values for a slice.
							__UpperCamelCase				:      Any									=       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(_UpperCAmelCase      )

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





				@slow
				def 	a_	(self      )     ->	Tuple:
							__UpperCamelCase				:      Optional[int]									=       XLMProphetNetForConditionalGeneration.from_pretrained(
							    "microsoft/xprophetnet-large-wiki100-cased-xglue-ntg"      )
							model.to(_UpperCAmelCase      )
							__UpperCamelCase				:      Any									=       5_1_2

							__UpperCamelCase				:      int									=       XLMProphetNetTokenizer.from_pretrained("microsoft/xprophetnet-large-wiki100-cased-xglue-ntg"      )

							__UpperCamelCase				:      Tuple									=       (
							    "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."
							)
							__UpperCamelCase				:      int									=       (
							    "орпорация Microsoft намерена официально прекратить бесплатную поддержку операционной системы Windows 7"
							    " после 14 января 2020 года, сообщается на официальном портале организации . С указанного дня пользователи"
							    " этой системы не смогут получать обновления безопасности, из-за чего их компьютеры могут стать уязвимыми"
							    " к кибератакам."
							)
							__UpperCamelCase				:      List[Any]									=       (
							    "根据该组织的官方门户网站，微软公司打算在2020年1月14日之后正式终止对Windows 7操作系统的免费支持。从那时起，该系统的用户将无法接收安全更新，这可能会使他们的计算机容易受到网络攻击。"
							)

							__UpperCamelCase				:      Dict									=       tokenizer(
							    [EN_SENTENCE, RU_SENTENCE, ZH_SENTENCE]			,  padding=_UpperCAmelCase			,  max_length=2_5_5			,  return_tensors="pt"      ).input_ids
							__UpperCamelCase				:      List[str]									=       input_ids.to(_UpperCAmelCase      )

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

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









'''simple docstring'''






from doctest import testmod
from math import sqrt

def       __lowerCAmelCase (   snake_case__						):
			__UpperCamelCase				:      list[int]									=       []
			if num < 1:
						return facs
			facs.append(1						)
			if num == 1:
						return facs
			facs.append(snake_case__						)
			for i in range(2 ,				int(sqrt(snake_case__						)						) + 1						):
						if num % i == 0:  # If i is a factor of num
									facs.append(snake_case__						)
									__UpperCamelCase				:      List[str]									=       num // i  # num//i is the other factor of num
									if d != i:  # If d and i are distinct
												facs.append(snake_case__						)  # we have found another factor
			facs.sort()
			return facs


if __name__ == "__main__":
				testmod(name='''factors_of_a_number''', verbose=True)



