From f65df3fc613b45a6987fa966fb99ffcc89efe58e Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Wed, 16 Dec 2020 21:11:52 +0330 Subject: [PATCH 1/8] add basic farsi support --- README.rst | 1 + num2words/__init__.py | 3 +- num2words/lang_FA.py | 165 ++++++++++++++++++++++++++++++++++++++++++ tests/test_fa.py | 85 ++++++++++++++++++++++ 4 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 num2words/lang_FA.py create mode 100644 tests/test_fa.py diff --git a/README.rst b/README.rst index db64202..c8524c5 100644 --- a/README.rst +++ b/README.rst @@ -86,6 +86,7 @@ Besides the numerical argument, there are two main optional arguments. * ``es_CO`` (Spanish - Colombia) * ``es_VE`` (Spanish - Venezuela) * ``eu`` (EURO) +* ``fa`` (Farsi) * ``fi`` (Finnish) * ``fr`` (French) * ``fr_CH`` (French - Switzerland) diff --git a/num2words/__init__.py b/num2words/__init__.py index 931d28a..0b85ec7 100644 --- a/num2words/__init__.py +++ b/num2words/__init__.py @@ -18,7 +18,7 @@ from __future__ import unicode_literals from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN, - lang_ES, lang_ES_CO, lang_ES_NI, lang_ES_VE, lang_FI, lang_FR, + lang_ES, lang_ES_CO, lang_ES_NI, lang_ES_VE, lang_FA, lang_FI, lang_FR, lang_FR_BE, lang_FR_CH, lang_FR_DZ, lang_HE, lang_HU, lang_ID, lang_IT, lang_JA, lang_KN, lang_KO, lang_KZ, lang_LT, lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, lang_RO, @@ -30,6 +30,7 @@ CONVERTER_CLASSES = { 'cz': lang_CZ.Num2Word_CZ(), 'en': lang_EN.Num2Word_EN(), 'en_IN': lang_EN_IN.Num2Word_EN_IN(), + 'fa': lang_FA.Num2Word_FA(), 'fr': lang_FR.Num2Word_FR(), 'fr_CH': lang_FR_CH.Num2Word_FR_CH(), 'fr_BE': lang_FR_BE.Num2Word_FR_BE(), diff --git a/num2words/lang_FA.py b/num2words/lang_FA.py new file mode 100644 index 0000000..9e232a7 --- /dev/null +++ b/num2words/lang_FA.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2003, Taro Ogawa. All Rights Reserved. +# Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved. +# Copyright (c) 2018, Abdullah Alhazmy, Alhazmy13. All Rights Reserved. +# Copyright (c) 2020, Hamidreza Kalbasi. All Rights Reserved. + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import re +from decimal import Decimal +from math import floor + +farsiOnes = [ + "", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", + "نه", + "ده", + "یازده", + "دوازده", + "سیزده", + "چهارده", + "پونزده", + "شونزده", + "هیفده", + "هیجده", + "نوزده", +] + +farsiTens = [ + "", + "ده", + "بیست", + "سی", + "چهل", + "پنجاه", + "شصت", + "هفتاد", + "هشتاد", + "نود", +] + +farsiHundreds = [ + "", + "صد", + "دویست", + "سیصد", + "چهارصد", + "پانصد", + "ششصد", + "هفتصد", + "هشتصد", + "نهصد", +] + +farsiBig = [ + '', + ' هزار', + ' میلیون', + " میلیارد", + ' تریلیون', + " تریلیارد", +] + +farsiFrac = ["", "دهم", "صدم"] +farsiFracBig = ["", "هزارم", "میلیونیم", "میلیاردیم"] + +farsiSeperator = ' و ' + +class Num2Word_FA(object): + errmsg_too_big = "Too large" + max_num = 10 ** 36 + + def __init__(self): + self.number = 0 + + def float2tuple(self, value): + pre = int(value) + + # Simple way of finding decimal places to update the precision + self.precision = abs(Decimal(str(value)).as_tuple().exponent) + + post = abs(value - pre) * 10**self.precision + if abs(round(post) - post) < 0.01: + # We generally floor all values beyond our precision (rather than + # rounding), but in cases where we have something like 1.239999999, + # which is probably due to python's handling of floats, we actually + # want to consider it as 1.24 instead of 1.23 + post = int(round(post)) + else: + post = int(math.floor(post)) + + return pre, post, self.precision + + + def cardinal3(self, number): + if (number < 19): + return farsiOnes[number] + if (number < 100): + x, y = divmod(number, 10) + if y == 0: + return farsiTens[x] + return farsiTens[x] + farsiSeperator + farsiOnes[y] + x, y = divmod(number, 100) + if y == 0: + return farsiHundreds[x] + return farsiHundreds[x] + farsiSeperator + self.cardinal3(y) + + def cardinalPos(self, number): + x = number + res = '' + for b in farsiBig: + x, y = divmod(x, 1000) + if (y == 0): + continue + yx = self.cardinal3(y) + b + if (res == ''): + res = yx + else: + res = yx + farsiSeperator + return res + + def fractional(self, number, l): + if (number == 5): + return "نیم" + x = self.cardinalPos(number) + ld3, lm3 = divmod(l, 3) + ltext = (farsiFrac[lm3] + " " + farsiFracBig[ld3]).strip() + return x + " " + ltext + + def to_currency(self, value): + return self.to_cardinal(value) + " تومان" + + def to_ordinal(self, number): + r = self.to_cardinal(number) + if (r[-1] == 'ه' and r[-2] == 'س'): + return r[:-1] + 'وم' + return r + 'م' + + def to_year(self, value): + return self.to_cardinal(value) + + def to_ordinal_num(self, value): + return str(value)+"م" + + def to_cardinal(self, number): + if number < 0: + return "منفی " + self.to_cardinal(-number) + if (number == 0): + return "صفر" + x, y, l = self.float2tuple(number) + if y == 0: + return self.cardinalPos(x) + if x == 0: + return self.fractional(y, l) + return self.cardinalPos(x) + farsiSeperator + self.fractional(y, l) \ No newline at end of file diff --git a/tests/test_fa.py b/tests/test_fa.py new file mode 100644 index 0000000..dbe9574 --- /dev/null +++ b/tests/test_fa.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2003, Taro Ogawa. All Rights Reserved. +# Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved. +# Copyright (c) 2020, Hamidreza Kalbasi. All Rights Reserved. + +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +from unittest import TestCase + +from num2words import num2words + + +class Num2WordsFATest(TestCase): + def test_and_join_199(self): + self.assertEqual(num2words(199, lang='fa'), "صد و نود و نه") + + def test_ordinal(self): + self.assertEqual( + num2words(0, lang='fa', to='ordinal'), + 'صفرم' + ) + self.assertEqual( + num2words(1, lang='fa', to='ordinal'), + 'یکم' + ) + self.assertEqual( + num2words(13, lang='fa', to='ordinal'), + 'سیزدهم' + ) + self.assertEqual( + num2words(23, lang='fa', to='ordinal'), + 'بیست و سوم' + ) + self.assertEqual( + num2words(12, lang='fa', to='ordinal'), + 'دوازدهم' + ) + self.assertEqual( + num2words(113, lang='fa', to='ordinal'), + 'صد و سیزدهم' + ) + self.assertEqual( + num2words(103, lang='fa', to='ordinal'), + 'صد و سوم' + ) + + def test_cardinal(self): + self.assertEqual(num2words(130000, lang='fa'), "صد و سی هزار") + self.assertEqual(num2words(242, lang='fa'), "دویست و چهل و دو") + + + + def test_ordinal_num(self): + self.assertEqual(num2words(10, lang='fa', to='ordinal_num'), '10م') + self.assertEqual(num2words(21, lang='fa', to='ordinal_num'), '21م') + self.assertEqual(num2words(102, lang='fa', to='ordinal_num'), '102م') + self.assertEqual(num2words(73, lang='fa', to='ordinal_num'), '73م') + + def test_cardinal_for_float_number(self): + self.assertEqual(num2words(12.5, lang='fa'), "دوازده و نیم") + self.assertEqual(num2words(0.75, lang='fa'), "هفتاد و پنج صدم") + self.assertEqual(num2words(12.51, lang='fa'), "دوازده و پنجاه و یک صدم") + self.assertEqual(num2words(12.53, lang='fa'), "دوازده و پنجاه و سه صدم") + self.assertEqual(num2words(12.59, lang='fa'), "دوازده و پنجاه و نه صدم") + self.assertEqual(num2words(0.000001, lang='fa'), "یک میلیونیم") + + def test_overflow(self): + with self.assertRaises(OverflowError): + num2words("1000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000" + "0000000000000000000000000000000000000000000000000000000" + "00000000000000000000000000000000") From b191c1fe1eca031a1fa144b66ea859b9ca5793d2 Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Sun, 24 Jan 2021 10:10:24 +0330 Subject: [PATCH 2/8] fix test coverage --- num2words/lang_FA.py | 4 +++- tests/test_fa.py | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/num2words/lang_FA.py b/num2words/lang_FA.py index 9e232a7..ca7004c 100644 --- a/num2words/lang_FA.py +++ b/num2words/lang_FA.py @@ -123,10 +123,12 @@ class Num2Word_FA(object): if (y == 0): continue yx = self.cardinal3(y) + b + if b == ' هزار' and y == 1: + yx = 'هزار' if (res == ''): res = yx else: - res = yx + farsiSeperator + res = yx + farsiSeperator + res return res def fractional(self, number, l): diff --git a/tests/test_fa.py b/tests/test_fa.py index dbe9574..4082e7f 100644 --- a/tests/test_fa.py +++ b/tests/test_fa.py @@ -58,8 +58,24 @@ class Num2WordsFATest(TestCase): def test_cardinal(self): self.assertEqual(num2words(130000, lang='fa'), "صد و سی هزار") self.assertEqual(num2words(242, lang='fa'), "دویست و چهل و دو") + self.assertEqual(num2words(800, lang='fa'), "هشتصد") + self.assertEqual(num2words(-203, lang='fa'), "منفی دویست و سه") + self.assertEqual( + num2words(1234567890, lang='fa'), + "یک میلیارد و دویست و سی و چهار میلیون و پانصد و شصت و هفت هزار و هشتصد و نود" + ) + + def test_year(self): + self.assertEqual(num2words(1398, lang='fa', to='year'), "هزار و سیصد و نود و هشت") + self.assertEqual(num2words(1399, lang='fa', to='year'), "هزار و سیصد و نود و نه") + self.assertEqual(num2words(1400, lang='fa', to='year'), "هزار و چهارصد") - + def test_currency(self): + self.assertEqual(num2words(1000, lang='fa', to='currency'), 'هزار تومان') + self.assertEqual( + num2words(1500000, lang='fa', to='currency'), + 'یک میلیون و پانصد هزار تومان' + ) def test_ordinal_num(self): self.assertEqual(num2words(10, lang='fa', to='ordinal_num'), '10م') From ca2651ad0f71632a0681805f83fedb63cb35769e Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Sun, 24 Jan 2021 10:30:06 +0330 Subject: [PATCH 3/8] remove unneccery if --- num2words/lang_FA.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/num2words/lang_FA.py b/num2words/lang_FA.py index ca7004c..9c5ff74 100644 --- a/num2words/lang_FA.py +++ b/num2words/lang_FA.py @@ -90,14 +90,7 @@ class Num2Word_FA(object): self.precision = abs(Decimal(str(value)).as_tuple().exponent) post = abs(value - pre) * 10**self.precision - if abs(round(post) - post) < 0.01: - # We generally floor all values beyond our precision (rather than - # rounding), but in cases where we have something like 1.239999999, - # which is probably due to python's handling of floats, we actually - # want to consider it as 1.24 instead of 1.23 - post = int(round(post)) - else: - post = int(math.floor(post)) + post = int(math.floor(post)) return pre, post, self.precision From a51b3e4d2be219818467cd2a06eb0d312d30da58 Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Mon, 25 Jan 2021 00:14:05 +0330 Subject: [PATCH 4/8] try fix test failure --- num2words/lang_FA.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/num2words/lang_FA.py b/num2words/lang_FA.py index 9c5ff74..f49b5f3 100644 --- a/num2words/lang_FA.py +++ b/num2words/lang_FA.py @@ -90,8 +90,14 @@ class Num2Word_FA(object): self.precision = abs(Decimal(str(value)).as_tuple().exponent) post = abs(value - pre) * 10**self.precision - post = int(math.floor(post)) - + if abs(round(post) - post) < 0.01: + # We generally floor all values beyond our precision (rather than + # rounding), but in cases where we have something like 1.239999999, + # which is probably due to python's handling of floats, we actually + # want to consider it as 1.24 instead of 1.23 + post = int(round(post)) + else: + post = int(floor(post)) return pre, post, self.precision From 5bb2be74a2d24c3adfc3cbba653b7a95ed6332ee Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Mon, 25 Jan 2021 01:16:45 +0330 Subject: [PATCH 5/8] fix format problem --- num2words/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/num2words/__init__.py b/num2words/__init__.py index 0b85ec7..67b8631 100644 --- a/num2words/__init__.py +++ b/num2words/__init__.py @@ -18,12 +18,12 @@ from __future__ import unicode_literals from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN, - lang_ES, lang_ES_CO, lang_ES_NI, lang_ES_VE, lang_FA, lang_FI, lang_FR, - lang_FR_BE, lang_FR_CH, lang_FR_DZ, lang_HE, lang_HU, lang_ID, - lang_IT, lang_JA, lang_KN, lang_KO, lang_KZ, lang_LT, lang_LV, - lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, lang_RO, - lang_RU, lang_SL, lang_SR, lang_TE, lang_TH, lang_TR, lang_UK, - lang_VI) + lang_ES, lang_ES_CO, lang_ES_NI, lang_ES_VE, lang_FA, lang_FI, + lang_FR, lang_FR_BE, lang_FR_CH, lang_FR_DZ, lang_HE, lang_HU, + lang_ID, lang_IT, lang_JA, lang_KN, lang_KO, lang_KZ, lang_LT, + lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, + lang_RO, lang_RU, lang_SL, lang_SR, lang_TE, lang_TH, lang_TR, + lang_UK, lang_VI) CONVERTER_CLASSES = { 'ar': lang_AR.Num2Word_AR(), From 6cbd81cfbb291eccbed6bd79206caead8938ce06 Mon Sep 17 00:00:00 2001 From: hamidreza kalbasi Date: Mon, 25 Jan 2021 10:34:01 +0330 Subject: [PATCH 6/8] fix flake8 problems --- num2words/lang_FA.py | 17 ++++++++--------- tests/test_fa.py | 26 +++++++++++++++++--------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/num2words/lang_FA.py b/num2words/lang_FA.py index f49b5f3..96e9e52 100644 --- a/num2words/lang_FA.py +++ b/num2words/lang_FA.py @@ -17,7 +17,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA -import re from decimal import Decimal from math import floor @@ -76,6 +75,7 @@ farsiFracBig = ["", "هزارم", "میلیونیم", "میلیاردیم"] farsiSeperator = ' و ' + class Num2Word_FA(object): errmsg_too_big = "Too large" max_num = 10 ** 36 @@ -100,7 +100,6 @@ class Num2Word_FA(object): post = int(floor(post)) return pre, post, self.precision - def cardinal3(self, number): if (number < 19): return farsiOnes[number] @@ -108,12 +107,12 @@ class Num2Word_FA(object): x, y = divmod(number, 10) if y == 0: return farsiTens[x] - return farsiTens[x] + farsiSeperator + farsiOnes[y] + return farsiTens[x] + farsiSeperator + farsiOnes[y] x, y = divmod(number, 100) if y == 0: return farsiHundreds[x] return farsiHundreds[x] + farsiSeperator + self.cardinal3(y) - + def cardinalPos(self, number): x = number res = '' @@ -130,11 +129,11 @@ class Num2Word_FA(object): res = yx + farsiSeperator + res return res - def fractional(self, number, l): + def fractional(self, number, level): if (number == 5): return "نیم" x = self.cardinalPos(number) - ld3, lm3 = divmod(l, 3) + ld3, lm3 = divmod(level, 3) ltext = (farsiFrac[lm3] + " " + farsiFracBig[ld3]).strip() return x + " " + ltext @@ -158,9 +157,9 @@ class Num2Word_FA(object): return "منفی " + self.to_cardinal(-number) if (number == 0): return "صفر" - x, y, l = self.float2tuple(number) + x, y, level = self.float2tuple(number) if y == 0: return self.cardinalPos(x) if x == 0: - return self.fractional(y, l) - return self.cardinalPos(x) + farsiSeperator + self.fractional(y, l) \ No newline at end of file + return self.fractional(y, level) + return self.cardinalPos(x) + farsiSeperator + self.fractional(y, level) diff --git a/tests/test_fa.py b/tests/test_fa.py index 4082e7f..9a9c4ea 100644 --- a/tests/test_fa.py +++ b/tests/test_fa.py @@ -62,16 +62,21 @@ class Num2WordsFATest(TestCase): self.assertEqual(num2words(-203, lang='fa'), "منفی دویست و سه") self.assertEqual( num2words(1234567890, lang='fa'), - "یک میلیارد و دویست و سی و چهار میلیون و پانصد و شصت و هفت هزار و هشتصد و نود" + "یک میلیارد و دویست و سی و چهار میلیون و" + " پانصد و شصت و هفت هزار و هشتصد و نود" ) def test_year(self): - self.assertEqual(num2words(1398, lang='fa', to='year'), "هزار و سیصد و نود و هشت") - self.assertEqual(num2words(1399, lang='fa', to='year'), "هزار و سیصد و نود و نه") - self.assertEqual(num2words(1400, lang='fa', to='year'), "هزار و چهارصد") - + self.assertEqual(num2words(1398, lang='fa', to='year'), + "هزار و سیصد و نود و هشت") + self.assertEqual(num2words(1399, lang='fa', to='year'), + "هزار و سیصد و نود و نه") + self.assertEqual( + num2words(1400, lang='fa', to='year'), "هزار و چهارصد") + def test_currency(self): - self.assertEqual(num2words(1000, lang='fa', to='currency'), 'هزار تومان') + self.assertEqual( + num2words(1000, lang='fa', to='currency'), 'هزار تومان') self.assertEqual( num2words(1500000, lang='fa', to='currency'), 'یک میلیون و پانصد هزار تومان' @@ -86,9 +91,12 @@ class Num2WordsFATest(TestCase): def test_cardinal_for_float_number(self): self.assertEqual(num2words(12.5, lang='fa'), "دوازده و نیم") self.assertEqual(num2words(0.75, lang='fa'), "هفتاد و پنج صدم") - self.assertEqual(num2words(12.51, lang='fa'), "دوازده و پنجاه و یک صدم") - self.assertEqual(num2words(12.53, lang='fa'), "دوازده و پنجاه و سه صدم") - self.assertEqual(num2words(12.59, lang='fa'), "دوازده و پنجاه و نه صدم") + self.assertEqual(num2words(12.51, lang='fa'), + "دوازده و پنجاه و یک صدم") + self.assertEqual(num2words(12.53, lang='fa'), + "دوازده و پنجاه و سه صدم") + self.assertEqual(num2words(12.59, lang='fa'), + "دوازده و پنجاه و نه صدم") self.assertEqual(num2words(0.000001, lang='fa'), "یک میلیونیم") def test_overflow(self): From b8a1d3168ef76a11b8932b4c3cb14e7ed5957d50 Mon Sep 17 00:00:00 2001 From: Katsuya Iida Date: Fri, 20 Aug 2021 17:29:01 +0900 Subject: [PATCH 7/8] =?UTF-8?q?Support=20Japanese=20Reiwa=20(=E4=BB=A4?= =?UTF-8?q?=E5=92=8C/=E3=82=8C=E3=81=84=E3=82=8F)=20era.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- num2words/lang_JA.py | 1 + tests/test_ja.py | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/num2words/lang_JA.py b/num2words/lang_JA.py index 58a2946..1e0e622 100644 --- a/num2words/lang_JA.py +++ b/num2words/lang_JA.py @@ -335,6 +335,7 @@ ERA_START = [ (1912, ("大正", "たいしょう")), (1926, ("昭和", "しょうわ")), (1989, ("平成", "へいせい")), + (2019, ("令和", "れいわ")), ] diff --git a/tests/test_ja.py b/tests/test_ja.py index eaac20b..42da144 100644 --- a/tests/test_ja.py +++ b/tests/test_ja.py @@ -163,6 +163,21 @@ class Num2WordsJATest(TestCase): "はちじゅうきゅうえん") def test_year(self): + self.assertEqual(n2j(2021, to="year"), "令和三年") + self.assertEqual(n2j(2021, to="year", reading=True), + "れいわさんねん") + self.assertEqual(n2j(2021, to="year", reading="arabic"), + "令和3年") + self.assertEqual(n2j(2019, to="year"), "令和元年") + self.assertEqual(n2j(2019, to="year", reading=True), + "れいわがんねん") + self.assertEqual(n2j(2019, to="year", reading="arabic"), + "令和1年") + self.assertEqual(n2j(2018, to="year"), "平成三十年") + self.assertEqual(n2j(2018, to="year", reading=True), + "へいせいさんじゅうねん") + self.assertEqual(n2j(2018, to="year", reading="arabic"), + "平成30年") self.assertEqual(n2j(2017, to="year"), "平成二十九年") self.assertEqual(n2j(2017, to="year", reading=True), "へいせいにじゅうくねん") @@ -176,8 +191,6 @@ class Num2WordsJATest(TestCase): "にせんねん") self.assertEqual(n2j(645, to="year"), "大化元年") self.assertEqual(n2j(645, to="year", reading=True), "たいかがんねん") - self.assertEqual(n2j(645, to="year"), "大化元年") - self.assertEqual(n2j(645, to="year", reading=True), "たいかがんねん") self.assertEqual(n2j(-99, to="year", era=False), "紀元前九十九年") self.assertEqual(n2j(-99, to="year", era=False, reading=True), "きげんぜんきゅうじゅうくねん") From d741a9d79015f2b009706951791a09c8b89dd478 Mon Sep 17 00:00:00 2001 From: Marlon Rodriguez Garcia <47992153+mrodriguezg1991@users.noreply.github.com> Date: Thu, 4 Aug 2022 16:17:58 -0400 Subject: [PATCH 8/8] Update __init__.py remove space --- num2words/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/num2words/__init__.py b/num2words/__init__.py index 6040017..1dfb5b0 100644 --- a/num2words/__init__.py +++ b/num2words/__init__.py @@ -21,7 +21,7 @@ from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN, lang_ES, lang_ES_CO, lang_ES_NI, lang_ES_VE, lang_FA, lang_FI, lang_FR, lang_FR_BE, lang_FR_CH, lang_FR_DZ, lang_HE, lang_HU, lang_ID, lang_IT, lang_JA, lang_KN, lang_KO, lang_KZ, lang_LT, - lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, + lang_LV, lang_NL, lang_NO, lang_PL, lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL, lang_SR, lang_SV, lang_TE, lang_TH, lang_TR, lang_UK, lang_VI)