Skip to content

Commit a9dddb8

Browse files
author
Hossein Pourbozorg
committed
fix: codefactor.io issues and add python 3.5 and 3.7 to travis-ci config file
1 parent 968360f commit a9dddb8

File tree

5 files changed

+48
-98
lines changed

5 files changed

+48
-98
lines changed

.travis.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
# https://travis-ci.org/mpcabd/python-arabic-reshaper
2+
dist: xenial
23
language: python
34
python:
45
- "2.7"
6+
- "3.5"
57
- "3.6"
8+
- "3.7"
69
install:
710
- "pip install -e ."
811
script:
9-
- "python setup.py test"
12+
- "python setup.py test"

arabic_reshaper/arabic_reshaper.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@
3131
from itertools import repeat
3232
from pkg_resources import resource_filename
3333

34-
from .ligatures import *
35-
from .letters import *
34+
from .ligatures import LIGATURES
35+
from .letters import (UNSHAPED, ISOLATED, TATWEEL, ZWJ, LETTERS, FINAL,
36+
INITIAL, MEDIAL, connects_with_letters_before_and_after,
37+
connects_with_letter_before, connects_with_letter_after)
38+
3639

3740
HARAKAT_RE = re.compile(
3841
'['

arabic_reshaper/ligatures.py

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -75,67 +75,6 @@
7575
)),
7676

7777
# Letters
78-
('ARABIC LIGATURE AIN WITH ALEF MAKSURA', (
79-
'\u0639\u0649', ('\uFCF7', '', '', '\uFD13'),
80-
)),
81-
('ARABIC LIGATURE AIN WITH JEEM', (
82-
'\u0639\u062C', ('\uFC29', '\uFCBA', '', ''),
83-
)),
84-
('ARABIC LIGATURE AIN WITH JEEM WITH MEEM', (
85-
'\u0639\u062C\u0645', ('', '\uFDC4', '', '\uFD75'),
86-
)),
87-
('ARABIC LIGATURE AIN WITH MEEM', (
88-
'\u0639\u0645', ('\uFC2A', '\uFCBB', '', ''),
89-
)),
90-
('ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA', (
91-
'\u0639\u0645\u0649', ('', '', '', '\uFD78'),
92-
)),
93-
('ARABIC LIGATURE AIN WITH MEEM WITH MEEM', (
94-
'\u0639\u0645\u0645', ('', '\uFD77', '', '\uFD76'),
95-
)),
96-
('ARABIC LIGATURE AIN WITH MEEM WITH YEH', (
97-
'\u0639\u0645\u064A', ('', '', '', '\uFDB6'),
98-
)),
99-
('ARABIC LIGATURE AIN WITH YEH', (
100-
'\u0639\u064A', ('\uFCF8', '', '', '\uFD14'),
101-
)),
102-
('ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF', (
103-
'\u0649\u0670', ('\uFC5D', '', '', '\uFC90'),
104-
)),
105-
('ARABIC LIGATURE ALEF WITH FATHATAN', (
106-
'\u0627\u064B', ('\uFD3D', '', '', '\uFD3C'),
107-
)),
108-
('ARABIC LIGATURE BEH WITH ALEF MAKSURA', (
109-
'\u0628\u0649', ('\uFC09', '', '', '\uFC6E'),
110-
)),
111-
('ARABIC LIGATURE BEH WITH HAH', (
112-
'\u0628\u062D', ('\uFC06', '\uFC9D', '', ''),
113-
)),
114-
('ARABIC LIGATURE BEH WITH HAH WITH YEH', (
115-
'\u0628\u062D\u064A', ('', '', '', '\uFDC2'),
116-
)),
117-
('ARABIC LIGATURE BEH WITH HEH', (
118-
'\u0628\u0647', ('', '\uFCA0', '\uFCE2', ''),
119-
)),
120-
('ARABIC LIGATURE BEH WITH JEEM', (
121-
'\u0628\u062C', ('\uFC05', '\uFC9C', '', ''),
122-
)),
123-
('ARABIC LIGATURE BEH WITH KHAH', (
124-
'\u0628\u062E', ('\uFC07', '\uFC9E', '', ''),
125-
)),
126-
('ARABIC LIGATURE BEH WITH KHAH WITH YEH', (
127-
'\u0628\u062E\u064A', ('', '', '', '\uFD9E'),
128-
)),
129-
('ARABIC LIGATURE BEH WITH MEEM', (
130-
'\u0628\u0645', ('\uFC08', '\uFC9F', '\uFCE1', '\uFC6C'),
131-
)),
132-
('ARABIC LIGATURE BEH WITH NOON', (
133-
'\u0628\u0646', ('', '', '', '\uFC6D'),
134-
)),
135-
('ARABIC LIGATURE BEH WITH REH', (
136-
'\u0628\u0631', ('', '', '', '\uFC6A'),
137-
)),
138-
13978
('ARABIC LIGATURE AIN WITH ALEF MAKSURA', (
14079
'\u0639\u0649', ('\uFCF7', '', '', '\uFD13'),
14180
)),

arabic_reshaper/tests/test_001_initialization.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import unittest
44
import arabic_reshaper
5+
import arabic_reshaper.ligatures
56

67

78
class TestDefaultConfiguration(unittest.TestCase):
@@ -32,13 +33,13 @@ def test_delete_tatweel(self):
3233
self.boolean_check('delete_tatweel')
3334

3435
def test_ligatures(self):
35-
import arabic_reshaper.ligatures
3636
for ligature in arabic_reshaper.ligatures.LIGATURES:
3737
if hasattr(self, 'subTest'):
3838
with self.subTest(ligature=ligature[0]):
3939
self.boolean_check(ligature[0])
4040
else:
4141
self.boolean_check(ligature[0])
4242

43+
4344
if __name__ == '__main__':
4445
unittest.main()

arabic_reshaper/tests/test_002_reshaping.py

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@
1010

1111

1212
def _reshaping_test(test):
13+
14+
def t(case):
15+
test.assertEqual(case[1], test.reshaper.reshape(case[0]))
16+
1317
for i, case in enumerate(test.cases):
14-
def t(): test.assertEqual(case[1], test.reshaper.reshape(case[0]))
1518
if hasattr(test, 'subTest'):
1619
with test.subTest(i=i, case=case[0]):
17-
t()
20+
t(case)
1821
else:
1922
print('running test case %d' % i, file=sys.stderr)
20-
t()
23+
t(case)
2124

2225

2326
class TestDefaultReshaping(unittest.TestCase):
@@ -29,16 +32,16 @@ def setUp(self):
2932
('اللغة العربية هي أكثر اللغات', 'ﺍﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ ﻫﻲ ﺃﻛﺜﺮ ﺍﻟﻠﻐﺎﺕ'),
3033
('تحدثاً ونطقاً ضمن مجموعة', 'ﺗﺤﺪﺛﺎ ﻭﻧﻄﻘﺎ ﺿﻤﻦ ﻣﺠﻤﻮﻋﺔ'),
3134
('اللغات السامية', 'ﺍﻟﻠﻐﺎﺕ ﺍﻟﺴﺎﻣﻴﺔ'),
32-
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
33-
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
34-
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
35-
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
36-
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
37-
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
38-
('الأمم المتحدة، ويُحتفل', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳﺤﺘﻔﻞ'),
39-
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
40-
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
41-
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
35+
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
36+
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
37+
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
38+
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
39+
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
40+
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
41+
('الأمم المتحدة، ويُحتفل', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳﺤﺘﻔﻞ'),
42+
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
43+
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
44+
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
4245
('الأمم المتحدة.', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ.'),
4346
)
4447

@@ -132,16 +135,16 @@ def setUp(self):
132135
('اللغة العربية هي أكثر اللغات', 'ﺍﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ ﻫﻲ ﺃﻛﺜﺮ ﺍﻟﻠﻐﺎﺕ'),
133136
('تحدثاً ونطقاً ضمن مجموعة', 'ﺗﺤﺪﺛﺎً ﻭﻧﻄﻘﺎً ﺿﻤﻦ ﻣﺠﻤﻮﻋﺔ'),
134137
('اللغات السامية', 'ﺍﻟﻠﻐﺎﺕ ﺍﻟﺴﺎﻣﻴﺔ'),
135-
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
136-
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
137-
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
138-
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
139-
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
140-
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
141-
('الأمم المتحدة، ويُحتفل', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳُﺤﺘﻔﻞ'),
142-
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
143-
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
144-
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
138+
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
139+
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
140+
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
141+
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
142+
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
143+
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
144+
('الأمم المتحدة، ويُحتفل', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳُﺤﺘﻔﻞ'),
145+
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
146+
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
147+
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
145148
('الأمم المتحدة.', 'ﺍﻷﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ.'),
146149
)
147150

@@ -160,16 +163,16 @@ def setUp(self):
160163
('اللغة العربية هي أكثر اللغات', 'ﺍﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ ﻫﻲ ﺃﻛﺜﺮ ﺍﻟﻠﻐﺎﺕ'),
161164
('تحدثاً ونطقاً ضمن مجموعة', 'ﺗﺤﺪﺛﺎً ﻭﻧﻄﻘﺎً ﺿﻤﻦ ﻣﺠﻤﻮﻋﺔ'),
162165
('اللغات السامية', 'ﺍﻟﻠﻐﺎﺕ ﺍﻟﺴﺎﻣﻴﺔ'),
163-
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
164-
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
165-
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
166-
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
167-
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
168-
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
169-
('الأمم المتحدة، ويُحتفل', 'ﺍﻟﺄﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳُﺤﺘﻔﻞ'),
170-
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
171-
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
172-
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
166+
('العربية لغة رسمية في', 'ﺍﻟﻌﺮﺑﻴﺔ ﻟﻐﺔ ﺭﺳﻤﻴﺔ ﻓﻲ'),
167+
('كل دول الوطن العربي', 'ﻛﻞ ﺩﻭﻝ ﺍﻟﻮﻃﻦ ﺍﻟﻌﺮﺑﻲ'),
168+
('إضافة إلى كونها لغة', 'ﺇﺿﺎﻓﺔ ﺇﻟﻰ ﻛﻮﻧﻬﺎ ﻟﻐﺔ'),
169+
('رسمية في تشاد وإريتريا', 'ﺭﺳﻤﻴﺔ ﻓﻲ ﺗﺸﺎﺩ ﻭﺇﺭﻳﺘﺮﻳﺎ'),
170+
('وإسرائيل. وهي إحدى اللغات', 'ﻭﺇﺳﺮﺍﺋﻴﻞ. ﻭﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ'),
171+
('الرسمية الست في منظمة', 'ﺍﻟﺮﺳﻤﻴﺔ ﺍﻟﺴﺖ ﻓﻲ ﻣﻨﻈﻤﺔ'),
172+
('الأمم المتحدة، ويُحتفل', 'ﺍﻟﺄﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ، ﻭﻳُﺤﺘﻔﻞ'),
173+
('باليوم العالمي للغة العربية', 'ﺑﺎﻟﻴﻮﻡ ﺍﻟﻌﺎﻟﻤﻲ ﻟﻠﻐﺔ ﺍﻟﻌﺮﺑﻴﺔ'),
174+
('في 18 ديسمبر كذكرى اعتماد', 'ﻓﻲ 18 ﺩﻳﺴﻤﺒﺮ ﻛﺬﻛﺮﻯ ﺍﻋﺘﻤﺎﺩ'),
175+
('العربية بين لغات العمل في', 'ﺍﻟﻌﺮﺑﻴﺔ ﺑﻴﻦ ﻟﻐﺎﺕ ﺍﻟﻌﻤﻞ ﻓﻲ'),
173176
('الأمم المتحدة.', 'ﺍﻟﺄﻣﻢ ﺍﻟﻤﺘﺤﺪﺓ.'),
174177
)
175178

@@ -248,5 +251,6 @@ def setUp(self):
248251
def test_reshaping(self):
249252
_reshaping_test(self)
250253

254+
251255
if __name__ == '__main__':
252256
unittest.main()

0 commit comments

Comments
 (0)