import sentencepiece as spm

# pegasus:
# 1. no bos
# 2. eos_id is 1
# 3. unk_id is 2
# build a sample spm file accordingly
spm.SentencePieceTrainer.train(
    '''--input=botchan.txt --model_prefix=test_sentencepiece_no_bos --bos_id=-1 --unk_id=2  --eos_id=1  --vocab_size=1000'''
)

# 4. now update the fixture
# mv test_sentencepiece_no_bos.model ../../tests/fixtures/




from __future__ import annotations


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	int		,						lowercase_:	int				):
       assert (
           c % greatest_common_divisor(lowercase_		,						lowercase_				) == 0
       )  # greatest_common_divisor(a,b) function implemented below
       ((_UpperCamelCase)						,      (_UpperCamelCase)						,      (_UpperCamelCase))     :       int  						=  extended_gcd(lowercase_		,						lowercase_				)  # extended_gcd(a,b) function implemented below
       _UpperCamelCase     :       List[Any]  						=  c / d
       return (r * x, r * y)


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	int		,						lowercase_:	int		,						lowercase_:	int = 2				):
       ((_UpperCamelCase)						,      (_UpperCamelCase))     :       Tuple  						=  diophantine(lowercase_		,						lowercase_		,						lowercase_				)  # Initial value
       _UpperCamelCase     :       List[Any]  						=  greatest_common_divisor(lowercase_		,						lowercase_				)
       _UpperCamelCase     :       Optional[int]  						=  a // d
       _UpperCamelCase     :       Optional[Any]  						=  b // d

       for i in range(lowercase_				):
              _UpperCamelCase     :       Union[str, Any]  						=  xa + i * q
              _UpperCamelCase     :       List[Any]  						=  ya - i * p
              print(lowercase_		,						lowercase_				)


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	int				):
       if a < b:
              _UpperCamelCase						,      _UpperCamelCase     :       Optional[Any]  						=  b, a

       while a % b != 0:
              _UpperCamelCase						,      _UpperCamelCase     :       Union[str, Any]  						=  b, a % b

       return b


def SCREAMING_SNAKE_CASE				(     lowercase_:	int		,						lowercase_:	int				):
       assert a >= 0 and b >= 0

       if b == 0:
              _UpperCamelCase						,      _UpperCamelCase						,      _UpperCamelCase     :       Optional[Any]  						=  a, 1, 0
       else:
              ((_UpperCamelCase)						,      (_UpperCamelCase)						,      (_UpperCamelCase))     :       Any  						=  extended_gcd(lowercase_		,						a % b				)
              _UpperCamelCase     :       Any  						=  q
              _UpperCamelCase     :       str  						=  p - q * (a // b)

       assert a % d == 0 and b % d == 0
       assert d == a * x + b * y

       return (d, x, y)


if __name__ == "__main__":
 from doctest import testmod

 testmod(name='''diophantine''', verbose=True)
 testmod(name='''diophantine_all_soln''', verbose=True)
 testmod(name='''extended_gcd''', verbose=True)
 testmod(name='''greatest_common_divisor''', verbose=True)



