
"""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 						lowercase(unittest.TestCase					):



     @slow
     def  lowercase__     (       self      )		->    Union[str, Any]:







         """simple docstring"""



         a__    = XLMProphetNetForConditionalGeneration.from_pretrained('microsoft/xprophetnet-large-wiki100-cased'      )
         model.to(__SCREAMING_SNAKE_CASE      )

         # encoder-decoder outputs
         a__    = torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(__SCREAMING_SNAKE_CASE      )
         a__    = 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(__SCREAMING_SNAKE_CASE      )
         a__    = model(
             input_ids=__SCREAMING_SNAKE_CASE    ,							attention_mask=__SCREAMING_SNAKE_CASE    ,							encoder_outputs=__SCREAMING_SNAKE_CASE    ,							decoder_input_ids=__SCREAMING_SNAKE_CASE      )
         a__    = output[0]
         a__    = torch.Size((1, 1_4, 2_5_0_0_1_2)      )
         self.assertEqual(output_predited_logis.shape    ,							__SCREAMING_SNAKE_CASE      )
         a__    = torch.tensor(
             [[[-6.39_86, -8.23_91, 12.51_89], [-6.32_89, -8.08_64, 12.62_11], [-6.24_18, -8.04_45, 12.79_68]]]      ).to(__SCREAMING_SNAKE_CASE      )
         self.assertTrue(torch.allclose(output_predited_logis[:, :3, :3]    ,							__SCREAMING_SNAKE_CASE    ,							atol=1e-4      )      )

         # encoder outputs
         a__    = model.prophetnet.encoder(__SCREAMING_SNAKE_CASE      )[0]
         a__    = torch.tensor(
             [[[-1.42_60, -0.76_28, 0.84_53], [-1.47_19, -0.13_91, 0.78_07], [-1.76_78, 0.01_14, 0.46_46]]]      ).to(__SCREAMING_SNAKE_CASE      )
         a__    = torch.Size((1, 4, 1_0_2_4)      )
         self.assertEqual(encoder_outputs.shape    ,							__SCREAMING_SNAKE_CASE      )
         self.assertTrue(torch.allclose(encoder_outputs[:, :3, :3]    ,							__SCREAMING_SNAKE_CASE    ,							atol=1e-4      )      )

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



     @slow
     def  lowercase__     (       self      )		->    Optional[Any]:







         """simple docstring"""



         a__    = XLMProphetNetForConditionalGeneration.from_pretrained(
             'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'      )
         model.to(__SCREAMING_SNAKE_CASE      )

         a__    = torch.tensor([[1_7, 9_6_2_0_8, 1_0_3_4_7_1, 2]]      ).to(__SCREAMING_SNAKE_CASE      )
         a__    = 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(__SCREAMING_SNAKE_CASE      )
         a__    = model(
             input_ids=__SCREAMING_SNAKE_CASE    ,							attention_mask=__SCREAMING_SNAKE_CASE    ,							encoder_outputs=__SCREAMING_SNAKE_CASE    ,							decoder_input_ids=__SCREAMING_SNAKE_CASE      )
         a__    = output[0]
         a__    = torch.Size((1, 1_4, 2_5_0_0_1_2)      )
         self.assertEqual(output_predited_logis.shape    ,							__SCREAMING_SNAKE_CASE      )
         # compare the actual values for a slice.
         a__    = torch.tensor(
             [[[-9.22_53, -9.71_73, -6.35_29], [-7.67_01, -9.01_45, -1.93_82], [-8.01_95, -7.00_04, -0.15_23]]]      ).to(__SCREAMING_SNAKE_CASE      )

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




     @slow
     def  lowercase__     (       self      )		->    str:







         """simple docstring"""



         a__    = XLMProphetNetForConditionalGeneration.from_pretrained(
             'microsoft/xprophetnet-large-wiki100-cased-xglue-ntg'      )
         model.to(__SCREAMING_SNAKE_CASE      )
         a__    = 5_1_2

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

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

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

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

         a__    = model.generate(
             __SCREAMING_SNAKE_CASE    ,							num_beams=1    ,							length_penalty=1.0    ,							no_repeat_ngram_size=3    ,							early_stopping=__SCREAMING_SNAKE_CASE      )
         a__    = [
             tokenizer.convert_ids_to_tokens(__SCREAMING_SNAKE_CASE    ,							skip_special_tokens=__SCREAMING_SNAKE_CASE      ) for g in summary_ids_beama
         ]
         a__    = '▁Microsoft ▁to ▁end ▁free ▁support ▁for ▁Windows ▁7'.split(' '      )
         a__    = '▁Microsoft ▁намерен а ▁прекрати ть ▁бес плат ную ▁поддержку ▁Windows ▁7 ▁после ▁14 ▁января ▁2020 ▁года'.split(
             ' '      )
         a__    = '微软 公司 打算 终止 对 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"""




a		:					str    	=					(1, 1_53, 3_70, 3_71, 16_34, 24_67_80_51, 1_15_13_22_19_01_87_63_99_25_65_09_55_97_97_39_71_52_24_01)
a		:					tuple    	=					(-1_53, -1, 0, 1.2, 2_00, "A", [], {}, None)



def 						__magic_name__		(				UpperCamelCase    :		int    )    ->	bool:
    if not isinstance(UpperCamelCase       ,		UpperCamelCase    ) or n < 1:
        return False

    # Initialization of sum and number of digits.
    a__    = 0
    a__    = 0
    a__    = n
    # Calculation of digits of the number
    while temp > 0:
        number_of_digits += 1
        temp //= 10
    # Dividing number into separate digits and find Armstrong number
    a__    = n
    while temp > 0:
        a__    = temp % 10
        total += rem**number_of_digits
        temp //= 10
    return n == total



def 						__magic_name__		(				UpperCamelCase    :		int    )    ->	bool:
    if not isinstance(UpperCamelCase       ,		UpperCamelCase    ) or n < 1:
        return False

    # Init a "histogram" of the digits
    a__    = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    a__    = 0
    a__    = 0
    a__    = n
    while temp > 0:
        a__  ,    a__    = divmod(UpperCamelCase       ,		10    )
        digit_histogram[rem] += 1
        digit_total += 1

    for cnt, i in zip(UpperCamelCase       ,		range(len(UpperCamelCase    )    )    ):
        total += cnt * i**digit_total

    return n == total



def 						__magic_name__		(				UpperCamelCase    :		int    )    ->	bool:
    if not isinstance(UpperCamelCase       ,		UpperCamelCase    ) or n < 1:
        return False
    a__    = len(str(UpperCamelCase    )    )  # the power that all digits will be raised to
    # check if sum of each digit multiplied expo times is equal to number
    return n == sum(int(UpperCamelCase    ) ** expo for i in str(UpperCamelCase    )    )



def 						__magic_name__		(				)    ->	List[Any]:
    a__    = int(input('Enter an integer to see if it is an Armstrong number: '    ).strip()    )
    print(f'{num} is {"" if armstrong_number(UpperCamelCase    ) else "not "}an Armstrong number.'    )
    print(f'{num} is {"" if narcissistic_number(UpperCamelCase    ) else "not "}an Armstrong number.'    )
    print(f'{num} is {"" if pluperfect_number(UpperCamelCase    ) else "not "}an Armstrong number.'    )


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    main()


