nepali 0.5.5__py3-none-any.whl → 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nepali/__init__.py +1 -1
- nepali/char.py +102 -81
- nepali/constants.py +66 -0
- nepali/date_converter.py +334 -0
- nepali/datetime/__init__.py +13 -14
- nepali/datetime/_datetime.py +391 -402
- nepali/datetime/_formatter.py +325 -0
- nepali/datetime/_humanize.py +117 -132
- nepali/datetime/_nepalimonth.py +118 -0
- nepali/datetime/_nepaliweek.py +125 -0
- nepali/datetime/parser/__init__.py +4 -4
- nepali/datetime/parser/_parser.py +59 -50
- nepali/datetime/parser/validators.py +249 -159
- nepali/datetime/utils.py +38 -0
- nepali/exceptions.py +8 -3
- nepali/locations/__init__.py +3 -0
- nepali/locations/_data.py +4271 -0
- nepali/locations/_locations.py +38 -0
- nepali/locations/models.py +104 -0
- nepali/locations/utils.py +54 -0
- nepali/number/__init__.py +19 -0
- nepali/number/_nepalinumber.py +563 -0
- nepali/number/_number.py +53 -0
- nepali/number/utils.py +72 -0
- nepali/phone_number.py +183 -0
- nepali/templatetags/__init__.py +0 -0
- nepali/templatetags/nepalidatetime.py +194 -24
- nepali/templatetags/nepalinumber.py +97 -7
- nepali/tests/test_date_converter.py +148 -0
- nepali/tests/test_datetime.py +275 -29
- nepali/tests/test_humanize.py +78 -7
- nepali/tests/test_locations.py +154 -0
- nepali/tests/test_nepalimonth.py +152 -0
- nepali/tests/test_nepaliweek.py +154 -0
- nepali/tests/test_number.py +3152 -0
- nepali/tests/test_parser.py +82 -69
- nepali/tests/test_phone_number.py +254 -0
- nepali/tests/test_timezone.py +192 -0
- nepali/timezone.py +50 -7
- nepali/utils.py +9 -68
- nepali-1.2.0.dist-info/METADATA +476 -0
- nepali-1.2.0.dist-info/RECORD +46 -0
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/WHEEL +1 -1
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info/licenses}/LICENSE +1 -1
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/top_level.txt +0 -0
- nepali/datetime/_converter.py +0 -394
- nepali/datetime/_formarter.py +0 -314
- nepali/datetime.py +0 -1169
- nepali/number.py +0 -51
- nepali-0.5.5.dist-info/METADATA +0 -220
- nepali-0.5.5.dist-info/RECORD +0 -27
nepali/tests/test_datetime.py
CHANGED
|
@@ -1,32 +1,112 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import unittest
|
|
3
3
|
|
|
4
|
-
from nepali.datetime import nepalidate,
|
|
4
|
+
from nepali.datetime import nepalidate, nepalidatetime, nepalitime
|
|
5
|
+
from nepali.datetime.utils import to_nepalidate, to_nepalidatetime
|
|
6
|
+
from nepali.exceptions import InvalidNepaliDateTimeObjectException
|
|
5
7
|
from nepali.timezone import NepaliTimeZone
|
|
6
|
-
from nepali.utils import to_nepali_timezone
|
|
7
8
|
|
|
8
|
-
class TestNepaliDateTime(unittest.TestCase):
|
|
9
9
|
|
|
10
|
+
class TestNepaliDateTime(unittest.TestCase):
|
|
10
11
|
#
|
|
11
12
|
# nepalidate
|
|
12
13
|
|
|
13
14
|
def test_nepalidate_now_and_today(self):
|
|
14
15
|
today = nepalidate.today()
|
|
15
16
|
now = nepalidate.now()
|
|
16
|
-
self.assertEqual(today, now, msg=
|
|
17
|
+
self.assertEqual(today, now, msg="nepalidate today is not equals to now.")
|
|
17
18
|
|
|
18
|
-
def
|
|
19
|
+
def test_nepalidate_comparison(self):
|
|
19
20
|
nepalidate_obj1 = nepalidate(year=2051, month=4, day=28)
|
|
20
21
|
|
|
21
22
|
# test equal date
|
|
22
23
|
nepalidate_obj2 = nepalidate(year=2051, month=4, day=28)
|
|
23
|
-
self.assertEqual(
|
|
24
|
+
self.assertEqual(
|
|
25
|
+
nepalidate_obj1, nepalidate_obj2, "Same nepali date are not checked equals."
|
|
26
|
+
)
|
|
24
27
|
|
|
25
28
|
# test different date
|
|
26
29
|
nepalidate_obj3 = nepalidate(year=2051, month=4, day=29)
|
|
27
|
-
self.assertNotEqual(
|
|
30
|
+
self.assertNotEqual(
|
|
31
|
+
nepalidate_obj1,
|
|
32
|
+
nepalidate_obj3,
|
|
33
|
+
"Different nepali date are checked as equal.",
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
#
|
|
37
|
+
# test addition
|
|
38
|
+
|
|
39
|
+
# test with timedelta
|
|
40
|
+
nt = nepalidate(year=2051, month=4, day=29)
|
|
41
|
+
nt = nt + datetime.timedelta(days=1)
|
|
42
|
+
self.assertEqual((nt.year, nt.month, nt.day), (2051, 4, 30))
|
|
43
|
+
|
|
44
|
+
# test without timedelta
|
|
45
|
+
with self.assertRaises(TypeError):
|
|
46
|
+
nt = nt + 1
|
|
47
|
+
|
|
48
|
+
#
|
|
49
|
+
# test subtraction
|
|
50
|
+
|
|
51
|
+
# test with nepali date
|
|
52
|
+
td = nepalidate(year=2051, month=4, day=30) - nepalidate(
|
|
53
|
+
year=2051, month=4, day=29
|
|
54
|
+
)
|
|
55
|
+
self.assertEqual(td.days, 1)
|
|
56
|
+
|
|
57
|
+
# test with python date
|
|
58
|
+
td = nepalidate(year=2051, month=4, day=30) - datetime.date(
|
|
59
|
+
year=1994, month=8, day=13
|
|
60
|
+
)
|
|
61
|
+
self.assertEqual(td.days, 1)
|
|
62
|
+
|
|
63
|
+
# test with timedelta
|
|
64
|
+
nt = nepalidate(year=2051, month=4, day=30) - datetime.timedelta(days=1)
|
|
65
|
+
self.assertEqual((nt.year, nt.month, nt.day), (2051, 4, 29))
|
|
66
|
+
|
|
67
|
+
# test without timedelta
|
|
68
|
+
with self.assertRaises(TypeError):
|
|
69
|
+
nt = nt - 1
|
|
70
|
+
|
|
71
|
+
#
|
|
72
|
+
# test less than
|
|
73
|
+
self.assertEqual(nepalidate(2051, 4, 29) < nepalidate(2051, 4, 30), True)
|
|
74
|
+
self.assertEqual(nepalidate(2051, 4, 29) < nepalidate(2051, 4, 29), False)
|
|
75
|
+
self.assertEqual(nepalidate(2051, 4, 29) < datetime.date(1994, 8, 14), True)
|
|
76
|
+
self.assertEqual(nepalidate(2051, 4, 29) < datetime.date(1994, 8, 13), False)
|
|
77
|
+
with self.assertRaises(TypeError):
|
|
78
|
+
_ = nepalidate(2051, 4, 29) < 0
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
# test less than equal
|
|
82
|
+
self.assertEqual(nepalidate(2051, 4, 29) <= nepalidate(2051, 4, 30), True)
|
|
83
|
+
self.assertEqual(nepalidate(2051, 4, 29) <= nepalidate(2051, 4, 29), True)
|
|
84
|
+
self.assertEqual(nepalidate(2051, 4, 30) <= nepalidate(2051, 4, 29), False)
|
|
85
|
+
self.assertEqual(nepalidate(2051, 4, 29) <= datetime.date(1994, 8, 14), True)
|
|
86
|
+
self.assertEqual(nepalidate(2051, 4, 29) <= datetime.date(1994, 8, 13), True)
|
|
87
|
+
self.assertEqual(nepalidate(2051, 4, 30) <= datetime.date(1994, 8, 13), False)
|
|
88
|
+
with self.assertRaises(TypeError):
|
|
89
|
+
_ = nepalidate(2051, 4, 29) <= 0
|
|
90
|
+
|
|
91
|
+
#
|
|
92
|
+
# test greater than
|
|
93
|
+
self.assertEqual(nepalidate(2051, 4, 30) > nepalidate(2051, 4, 29), True)
|
|
94
|
+
self.assertEqual(nepalidate(2051, 4, 30) > nepalidate(2051, 4, 30), False)
|
|
95
|
+
self.assertEqual(nepalidate(2051, 4, 30) > datetime.date(1994, 8, 14), False)
|
|
96
|
+
self.assertEqual(nepalidate(2051, 4, 30) > datetime.date(1994, 8, 13), True)
|
|
97
|
+
with self.assertRaises(TypeError):
|
|
98
|
+
_ = nepalidate(2051, 4, 29) > 0
|
|
28
99
|
|
|
29
|
-
#
|
|
100
|
+
#
|
|
101
|
+
# test greater than equal
|
|
102
|
+
self.assertEqual(nepalidate(2051, 4, 30) >= nepalidate(2051, 4, 30), True)
|
|
103
|
+
self.assertEqual(nepalidate(2051, 4, 30) >= nepalidate(2051, 4, 29), True)
|
|
104
|
+
self.assertEqual(nepalidate(2051, 4, 29) >= nepalidate(2051, 4, 30), False)
|
|
105
|
+
self.assertEqual(nepalidate(2051, 4, 30) >= datetime.date(1994, 8, 14), True)
|
|
106
|
+
self.assertEqual(nepalidate(2051, 4, 30) >= datetime.date(1994, 8, 13), True)
|
|
107
|
+
self.assertEqual(nepalidate(2051, 4, 29) >= datetime.date(1994, 8, 14), False)
|
|
108
|
+
with self.assertRaises(TypeError):
|
|
109
|
+
_ = nepalidate(2051, 4, 29) >= 0
|
|
30
110
|
|
|
31
111
|
def test_nepalidate_year_month_day(self):
|
|
32
112
|
nepalidate_obj = nepalidate(year=2051, month=4, day=28)
|
|
@@ -38,29 +118,50 @@ class TestNepaliDateTime(unittest.TestCase):
|
|
|
38
118
|
def test_nepalidate_from_date(self):
|
|
39
119
|
python_date_obj = datetime.date(year=1994, month=8, day=12)
|
|
40
120
|
nepalidate_obj = nepalidate.from_date(python_date_obj)
|
|
41
|
-
self.assertEqual(
|
|
121
|
+
self.assertEqual(
|
|
122
|
+
python_date_obj,
|
|
123
|
+
nepalidate_obj.to_date(),
|
|
124
|
+
"nepalidate from_date and to_date are not equal.",
|
|
125
|
+
)
|
|
42
126
|
|
|
43
127
|
def test_nepalidate_from_datetime(self):
|
|
44
|
-
python_datetime_obj = datetime.datetime(
|
|
128
|
+
python_datetime_obj = datetime.datetime(
|
|
129
|
+
year=1994, month=8, day=12, hour=4, minute=8, second=12
|
|
130
|
+
)
|
|
45
131
|
nepalidate_obj = nepalidate.from_datetime(python_datetime_obj)
|
|
46
|
-
self.assertEqual(
|
|
132
|
+
self.assertEqual(
|
|
133
|
+
python_datetime_obj.date(),
|
|
134
|
+
nepalidate_obj.to_date(),
|
|
135
|
+
"nepalidate from_datetime and to_datetime are not equal.",
|
|
136
|
+
)
|
|
47
137
|
|
|
48
138
|
def test_nepalidate_strftime(self):
|
|
49
139
|
nepalidate_obj = nepalidate(year=2051, month=4, day=28)
|
|
50
|
-
self.assertEqual(nepalidate_obj.strftime(
|
|
51
|
-
self.assertEqual(
|
|
52
|
-
|
|
53
|
-
|
|
140
|
+
self.assertEqual(nepalidate_obj.strftime("%Y-%m-%d"), "2051-04-28")
|
|
141
|
+
self.assertEqual(
|
|
142
|
+
nepalidate_obj.strftime("%a %A %w %d %b %B %m %y %Y"),
|
|
143
|
+
"Fri Friday 5 28 Sharwan Sharwan 04 51 2051",
|
|
144
|
+
)
|
|
145
|
+
self.assertEqual(nepalidate_obj.strftime_en("%Y-%m-%d"), "2051-04-28")
|
|
146
|
+
self.assertEqual(
|
|
147
|
+
nepalidate_obj.strftime_en("%a %A %w %d %b %B %m %y %Y"),
|
|
148
|
+
"Fri Friday 5 28 Sharwan Sharwan 04 51 2051",
|
|
149
|
+
)
|
|
150
|
+
self.assertEqual(nepalidate_obj.strftime_ne("%Y-%m-%d"), "२०५१-०४-२८")
|
|
151
|
+
self.assertEqual(
|
|
152
|
+
nepalidate_obj.strftime_ne("%a %A %w %d %b %B %m %y %Y"),
|
|
153
|
+
"शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१",
|
|
154
|
+
)
|
|
54
155
|
|
|
55
156
|
def test_nepalidate_strptime(self):
|
|
56
|
-
nepalidatetime_obj = nepalidate.strptime(
|
|
157
|
+
nepalidatetime_obj = nepalidate.strptime("2078-01-12", format="%Y-%m-%d")
|
|
57
158
|
self.assertEqual(nepalidatetime_obj.year, 2078)
|
|
58
159
|
self.assertEqual(nepalidatetime_obj.month, 1)
|
|
59
160
|
self.assertEqual(nepalidatetime_obj.day, 12)
|
|
60
161
|
|
|
61
162
|
#
|
|
62
163
|
# nepalitime
|
|
63
|
-
|
|
164
|
+
|
|
64
165
|
def test_nepalitime_now(self):
|
|
65
166
|
nepalitime_obj, dt_now = nepalitime.now(), datetime.datetime.now()
|
|
66
167
|
self.assertEqual(nepalitime_obj.hour, dt_now.hour)
|
|
@@ -71,24 +172,67 @@ class TestNepaliDateTime(unittest.TestCase):
|
|
|
71
172
|
# nepalidatetime
|
|
72
173
|
|
|
73
174
|
def test_nepalidatetime_from_date(self):
|
|
74
|
-
python_datetime_obj = datetime.datetime(
|
|
175
|
+
python_datetime_obj = datetime.datetime(
|
|
176
|
+
year=1994, month=8, day=12, hour=5, minute=28, second=23
|
|
177
|
+
)
|
|
75
178
|
nepalidatetime_obj = nepalidatetime.from_date(python_datetime_obj)
|
|
76
179
|
self.assertEqual(python_datetime_obj.date(), nepalidatetime_obj.to_date())
|
|
77
180
|
|
|
78
181
|
def test_nepalidatetime_from_datetime(self):
|
|
79
|
-
python_datetime_obj = datetime.datetime(
|
|
182
|
+
python_datetime_obj = datetime.datetime(
|
|
183
|
+
year=1994,
|
|
184
|
+
month=8,
|
|
185
|
+
day=12,
|
|
186
|
+
hour=5,
|
|
187
|
+
minute=28,
|
|
188
|
+
second=23,
|
|
189
|
+
tzinfo=NepaliTimeZone(),
|
|
190
|
+
)
|
|
80
191
|
nepalidatetime_obj = nepalidatetime.from_datetime(python_datetime_obj)
|
|
81
|
-
self.assertEqual(
|
|
192
|
+
self.assertEqual(
|
|
193
|
+
python_datetime_obj,
|
|
194
|
+
nepalidatetime_obj.to_datetime(),
|
|
195
|
+
msg="{} and {} are not equal.".format(
|
|
196
|
+
python_datetime_obj, nepalidatetime_obj.to_datetime()
|
|
197
|
+
),
|
|
198
|
+
)
|
|
82
199
|
|
|
83
200
|
def test_nepalidatetime_strftime(self):
|
|
84
|
-
nepalidatetime_obj = nepalidatetime(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
self.assertEqual(
|
|
88
|
-
|
|
201
|
+
nepalidatetime_obj = nepalidatetime(
|
|
202
|
+
year=2051, month=4, day=28, hour=5, minute=28, second=23
|
|
203
|
+
)
|
|
204
|
+
self.assertEqual(
|
|
205
|
+
nepalidatetime_obj.strftime("%Y-%m-%d %H:%M:%S"), "2051-04-28 05:28:23"
|
|
206
|
+
)
|
|
207
|
+
self.assertEqual(
|
|
208
|
+
nepalidatetime_obj.strftime("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
|
|
209
|
+
"Fri Friday 5 28 Sharwan Sharwan 04 51 2051 05 05 AM 28 23",
|
|
210
|
+
)
|
|
211
|
+
self.assertEqual(
|
|
212
|
+
nepalidatetime_obj.strftime_en("%Y-%m-%d %H:%M:%S"), "2051-04-28 05:28:23"
|
|
213
|
+
)
|
|
214
|
+
self.assertEqual(
|
|
215
|
+
nepalidatetime_obj.strftime_en("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
|
|
216
|
+
"Fri Friday 5 28 Sharwan Sharwan 04 51 2051 05 05 AM 28 23",
|
|
217
|
+
)
|
|
218
|
+
self.assertEqual(
|
|
219
|
+
nepalidatetime_obj.strftime_en(
|
|
220
|
+
"%a %A %w %d %-d %b %B %m %-m %y %Y %H %-H %I %-I %p %M %-M %S %-S %%"
|
|
221
|
+
),
|
|
222
|
+
"Fri Friday 5 28 28 Sharwan Sharwan 04 4 51 2051 05 5 05 5 AM 28 28 23 23 %",
|
|
223
|
+
)
|
|
224
|
+
self.assertEqual(
|
|
225
|
+
nepalidatetime_obj.strftime_ne("%Y-%m-%d %H:%M:%S"), "२०५१-०४-२८ ०५:२८:२३"
|
|
226
|
+
)
|
|
227
|
+
self.assertEqual(
|
|
228
|
+
nepalidatetime_obj.strftime_ne("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
|
|
229
|
+
"शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१ ०५ ०५ शुभप्रभात २८ २३",
|
|
230
|
+
)
|
|
89
231
|
|
|
90
232
|
def test_nepalidatetime_strptime(self):
|
|
91
|
-
nepalidatetime_obj = nepalidatetime.strptime(
|
|
233
|
+
nepalidatetime_obj = nepalidatetime.strptime(
|
|
234
|
+
"2078-01-12 13:12", format="%Y-%m-%d %H:%M"
|
|
235
|
+
)
|
|
92
236
|
self.assertEqual(nepalidatetime_obj.year, 2078)
|
|
93
237
|
self.assertEqual(nepalidatetime_obj.month, 1)
|
|
94
238
|
self.assertEqual(nepalidatetime_obj.day, 12)
|
|
@@ -96,7 +240,109 @@ class TestNepaliDateTime(unittest.TestCase):
|
|
|
96
240
|
self.assertEqual(nepalidatetime_obj.minute, 12)
|
|
97
241
|
|
|
98
242
|
def test_nepalidatetime_timedelta(self):
|
|
99
|
-
nepalidatetime_obj1 = nepalidatetime(
|
|
100
|
-
|
|
243
|
+
nepalidatetime_obj1 = nepalidatetime(
|
|
244
|
+
year=2051, month=4, day=28, hour=5, minute=28, second=23
|
|
245
|
+
)
|
|
246
|
+
nepalidatetime_obj2 = nepalidatetime(
|
|
247
|
+
year=2051, month=4, day=29, hour=5, minute=28, second=23
|
|
248
|
+
)
|
|
101
249
|
nepalidatetime_obj1 = nepalidatetime_obj1 + datetime.timedelta(days=1)
|
|
102
|
-
self.assertEqual(
|
|
250
|
+
self.assertEqual(
|
|
251
|
+
nepalidatetime_obj1,
|
|
252
|
+
nepalidatetime_obj2,
|
|
253
|
+
msg=f"{nepalidatetime_obj1} and {nepalidatetime_obj2} are not equal",
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class TestDatetimeUtils(unittest.TestCase):
|
|
258
|
+
# to_nepalidate
|
|
259
|
+
def test_to_nepalidate_raises_exception_on_invalid_input(self):
|
|
260
|
+
with self.assertRaises(InvalidNepaliDateTimeObjectException):
|
|
261
|
+
to_nepalidate("Invalid input")
|
|
262
|
+
|
|
263
|
+
def test_to_nepalidate_from_python_date(self):
|
|
264
|
+
np_date = to_nepalidate(datetime.date(2023, 2, 26))
|
|
265
|
+
self.assertSequenceEqual(
|
|
266
|
+
(np_date.year, np_date.month, np_date.day), (2079, 11, 14)
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
def test_to_nepalidate_from_python_datetime(self):
|
|
270
|
+
np_date = to_nepalidate(datetime.datetime(2023, 2, 26, 1, 12, 13))
|
|
271
|
+
self.assertSequenceEqual(
|
|
272
|
+
(np_date.year, np_date.month, np_date.day), (2079, 11, 14)
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
def test_to_nepalidate_from_nepalidate(self):
|
|
276
|
+
np_date = to_nepalidate(nepalidate(2079, 11, 14))
|
|
277
|
+
self.assertSequenceEqual(
|
|
278
|
+
(np_date.year, np_date.month, np_date.day), (2079, 11, 14)
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
def test_to_nepalidate_from_nepalidatetime(self):
|
|
282
|
+
np_date = to_nepalidate(nepalidatetime(2079, 11, 14, 1, 12, 13))
|
|
283
|
+
self.assertSequenceEqual(
|
|
284
|
+
(np_date.year, np_date.month, np_date.day), (2079, 11, 14)
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
# to_nepalidatetime
|
|
288
|
+
def test_to_nepalidatetime_raises_exception_on_invalid_input(self):
|
|
289
|
+
with self.assertRaises(InvalidNepaliDateTimeObjectException):
|
|
290
|
+
to_nepalidatetime("Invalid input")
|
|
291
|
+
|
|
292
|
+
def test_to_nepalidatetime_from_python_date(self):
|
|
293
|
+
np_date = to_nepalidatetime(datetime.date(2023, 2, 26))
|
|
294
|
+
self.assertSequenceEqual(
|
|
295
|
+
(
|
|
296
|
+
np_date.year,
|
|
297
|
+
np_date.month,
|
|
298
|
+
np_date.day,
|
|
299
|
+
np_date.hour,
|
|
300
|
+
np_date.minute,
|
|
301
|
+
np_date.second,
|
|
302
|
+
),
|
|
303
|
+
(2079, 11, 14, 0, 0, 0),
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
def test_to_nepalidatetime_from_python_datetime(self):
|
|
307
|
+
np_date = to_nepalidatetime(
|
|
308
|
+
datetime.datetime(2023, 2, 26, 4, 30, 13, tzinfo=datetime.timezone.utc)
|
|
309
|
+
)
|
|
310
|
+
self.assertSequenceEqual(
|
|
311
|
+
(
|
|
312
|
+
np_date.year,
|
|
313
|
+
np_date.month,
|
|
314
|
+
np_date.day,
|
|
315
|
+
np_date.hour,
|
|
316
|
+
np_date.minute,
|
|
317
|
+
np_date.second,
|
|
318
|
+
),
|
|
319
|
+
(2079, 11, 14, 10, 15, 13),
|
|
320
|
+
)
|
|
321
|
+
|
|
322
|
+
def test_to_nepalidatetime_from_nepalidate(self):
|
|
323
|
+
np_date = to_nepalidatetime(nepalidate(2079, 11, 14))
|
|
324
|
+
self.assertSequenceEqual(
|
|
325
|
+
(
|
|
326
|
+
np_date.year,
|
|
327
|
+
np_date.month,
|
|
328
|
+
np_date.day,
|
|
329
|
+
np_date.hour,
|
|
330
|
+
np_date.minute,
|
|
331
|
+
np_date.second,
|
|
332
|
+
),
|
|
333
|
+
(2079, 11, 14, 0, 0, 0),
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
def test_to_nepalidatetime_from_nepalidatetime(self):
|
|
337
|
+
np_date = to_nepalidatetime(nepalidatetime(2079, 11, 14, 1, 12, 13))
|
|
338
|
+
self.assertSequenceEqual(
|
|
339
|
+
(
|
|
340
|
+
np_date.year,
|
|
341
|
+
np_date.month,
|
|
342
|
+
np_date.day,
|
|
343
|
+
np_date.hour,
|
|
344
|
+
np_date.minute,
|
|
345
|
+
np_date.second,
|
|
346
|
+
),
|
|
347
|
+
(2079, 11, 14, 1, 12, 13),
|
|
348
|
+
)
|
nepali/tests/test_humanize.py
CHANGED
|
@@ -1,13 +1,84 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import unittest
|
|
3
|
+
from unittest.mock import patch
|
|
3
4
|
|
|
4
|
-
from nepali.datetime import nepalihumanize
|
|
5
|
+
from nepali.datetime import HumanizeDateTime, nepalidate, nepalidatetime, nepalihumanize
|
|
6
|
+
from nepali.exceptions import InvalidNepaliDateTimeObjectException
|
|
7
|
+
from nepali.timezone import NepaliTimeZone
|
|
5
8
|
|
|
6
|
-
|
|
9
|
+
REF_TIME = datetime.datetime(2015, 1, 1, 10, 15, tzinfo=NepaliTimeZone())
|
|
7
10
|
|
|
8
|
-
def test_nepalihumanize_basic(self):
|
|
9
|
-
humanize_str = nepalihumanize(datetime.datetime(2022, 2, 15), threshold=0)
|
|
10
|
-
self.assertNotEqual(humanize_str, None, msg='Invalid nepali humanize str.')
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
@patch("nepali.datetime._humanize.now", return_value=REF_TIME)
|
|
13
|
+
class TestNepaliHumanizeFunction(unittest.TestCase):
|
|
14
|
+
def test_nepalihumanize_for_just_now(self, *_):
|
|
15
|
+
humanize_str = nepalihumanize(REF_TIME)
|
|
16
|
+
self.assertEqual(humanize_str, "भर्खरै")
|
|
17
|
+
|
|
18
|
+
def test_nepalihumanize_for_seconds(self, *_):
|
|
19
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(seconds=10))
|
|
20
|
+
self.assertEqual(humanize_str, "१० सेकेन्ड अघि")
|
|
21
|
+
|
|
22
|
+
def test_nepalihumanize_for_minutes(self, *_):
|
|
23
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(minutes=10))
|
|
24
|
+
self.assertEqual(humanize_str, "१० मिनेट अघि")
|
|
25
|
+
|
|
26
|
+
def test_nepalihumanize_for_hours(self, *_):
|
|
27
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(hours=10))
|
|
28
|
+
self.assertEqual(humanize_str, "१० घण्टा अघि")
|
|
29
|
+
|
|
30
|
+
def test_nepalihumanize_for_days(self, *_):
|
|
31
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=10))
|
|
32
|
+
self.assertEqual(humanize_str, "१० दिन अघि")
|
|
33
|
+
|
|
34
|
+
def test_nepalihumanize_for_months(self, *_):
|
|
35
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=32))
|
|
36
|
+
self.assertEqual(humanize_str, "१ महिना अघि")
|
|
37
|
+
|
|
38
|
+
def test_nepalihumanize_for_years(self, *_):
|
|
39
|
+
humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=366))
|
|
40
|
+
self.assertEqual(humanize_str, "१ वर्ष अघि")
|
|
41
|
+
|
|
42
|
+
def test_nepalihumanize_for_future(self, *_):
|
|
43
|
+
humanize_str = nepalihumanize(REF_TIME + datetime.timedelta(days=10))
|
|
44
|
+
self.assertEqual(humanize_str, "१० दिन पछि")
|
|
45
|
+
|
|
46
|
+
def test_nepalihumanize_returns_date_after_threshold(self, *_):
|
|
47
|
+
humanize_str = nepalihumanize(
|
|
48
|
+
REF_TIME - datetime.timedelta(seconds=10), threshold=10
|
|
49
|
+
)
|
|
50
|
+
self.assertEqual(humanize_str, "पुस १७, २०७१")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class TestHumanizeDateTimeClass(unittest.TestCase):
|
|
54
|
+
def test_nepali_humanize_raise_exception_on_invalid_input(self, *_):
|
|
55
|
+
with self.assertRaises(InvalidNepaliDateTimeObjectException):
|
|
56
|
+
HumanizeDateTime("test")
|
|
57
|
+
|
|
58
|
+
with self.assertRaises(InvalidNepaliDateTimeObjectException):
|
|
59
|
+
HumanizeDateTime(None)
|
|
60
|
+
|
|
61
|
+
with self.assertRaises(InvalidNepaliDateTimeObjectException):
|
|
62
|
+
HumanizeDateTime("2017-12-04")
|
|
63
|
+
|
|
64
|
+
def test_nepali_humanize_supports_python_date(self, *_):
|
|
65
|
+
humanize_obj = HumanizeDateTime(datetime.date.today())
|
|
66
|
+
self.assertEqual(type(humanize_obj.to_str()), str)
|
|
67
|
+
|
|
68
|
+
def test_nepali_humanize_supports_python_datetime(self, *_):
|
|
69
|
+
humanize_obj = HumanizeDateTime(datetime.datetime.now())
|
|
70
|
+
self.assertEqual(type(humanize_obj.to_str()), str)
|
|
71
|
+
|
|
72
|
+
def test_nepali_humanize_supports_nepalidate(self, *_):
|
|
73
|
+
humanize_obj = HumanizeDateTime(nepalidate.today())
|
|
74
|
+
self.assertEqual(type(humanize_obj.to_str()), str)
|
|
75
|
+
|
|
76
|
+
def test_nepali_humanize_supports_nepalidatetime(self, *_):
|
|
77
|
+
humanize_obj = HumanizeDateTime(nepalidatetime.now())
|
|
78
|
+
self.assertEqual(type(humanize_obj.to_str()), str)
|
|
79
|
+
|
|
80
|
+
@patch("nepali.datetime._humanize.now", return_value=REF_TIME)
|
|
81
|
+
def test_test_nepali_humanize_str_and_repr(self, *_):
|
|
82
|
+
humanize_obj = HumanizeDateTime(REF_TIME + datetime.timedelta(days=10))
|
|
83
|
+
self.assertEqual(str(humanize_obj), "१० दिन पछि")
|
|
84
|
+
self.assertEqual(repr(humanize_obj), "१० दिन पछि")
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from nepali import locations
|
|
4
|
+
from nepali.locations.models import (
|
|
5
|
+
District,
|
|
6
|
+
Location,
|
|
7
|
+
Municipality,
|
|
8
|
+
MunicipalityType,
|
|
9
|
+
Province,
|
|
10
|
+
)
|
|
11
|
+
from nepali.locations.utils import (
|
|
12
|
+
_filter_location,
|
|
13
|
+
get_district,
|
|
14
|
+
get_municipality,
|
|
15
|
+
get_province,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TestLocations(unittest.TestCase):
|
|
20
|
+
def test_locations_count(self):
|
|
21
|
+
self.assertEqual(len(locations.provinces), 7)
|
|
22
|
+
self.assertEqual(len(locations.districts), 77)
|
|
23
|
+
self.assertEqual(len(locations.municipalities), 753)
|
|
24
|
+
|
|
25
|
+
def test_utils_filter_location(self):
|
|
26
|
+
# checking if no argument is passed
|
|
27
|
+
with self.assertRaises(ValueError):
|
|
28
|
+
_filter_location(locations=locations.provinces)
|
|
29
|
+
|
|
30
|
+
# checking pattern match
|
|
31
|
+
province = _filter_location(locations=locations.provinces, name="Bagmati")
|
|
32
|
+
self.assertEqual(province.name, "Bagmati Province")
|
|
33
|
+
|
|
34
|
+
# checking ignore-case match
|
|
35
|
+
province = _filter_location(locations=locations.provinces, name="bagmati")
|
|
36
|
+
self.assertEqual(province.name, "Bagmati Province")
|
|
37
|
+
|
|
38
|
+
# checking with invalid name
|
|
39
|
+
province = _filter_location(locations=locations.provinces, name="invalid")
|
|
40
|
+
self.assertEqual(province, None)
|
|
41
|
+
|
|
42
|
+
# checking using exact True with invalid match
|
|
43
|
+
province = _filter_location(
|
|
44
|
+
locations=locations.provinces, name="Bagmati", exact=True
|
|
45
|
+
)
|
|
46
|
+
self.assertEqual(province, None)
|
|
47
|
+
|
|
48
|
+
# checking using exact True with a valid match
|
|
49
|
+
province = _filter_location(
|
|
50
|
+
locations=locations.provinces, name="Bagmati Province", exact=True
|
|
51
|
+
)
|
|
52
|
+
self.assertEqual(province.name, "Bagmati Province")
|
|
53
|
+
|
|
54
|
+
# checking assertion if exact and multiple is passes together
|
|
55
|
+
with self.assertRaises(ValueError):
|
|
56
|
+
_filter_location(
|
|
57
|
+
locations=locations.provinces,
|
|
58
|
+
name="Bagmati Province",
|
|
59
|
+
exact=True,
|
|
60
|
+
multiple=True,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
# checking multiple value match
|
|
64
|
+
provinces = _filter_location(
|
|
65
|
+
locations=locations.provinces, name="Province", multiple=True
|
|
66
|
+
)
|
|
67
|
+
self.assertEqual(type(provinces), list)
|
|
68
|
+
self.assertEqual(len(provinces), 7)
|
|
69
|
+
|
|
70
|
+
# checking multiple value with invalid match
|
|
71
|
+
provinces = _filter_location(
|
|
72
|
+
locations=locations.provinces, name="invalid", multiple=True
|
|
73
|
+
)
|
|
74
|
+
self.assertEqual(len(provinces), 0)
|
|
75
|
+
|
|
76
|
+
# checking pattern match with nepali name
|
|
77
|
+
province = _filter_location(locations=locations.provinces, name_nepali="बागमती")
|
|
78
|
+
self.assertEqual(province.name_nepali, "बागमती प्रदेश")
|
|
79
|
+
|
|
80
|
+
# checking using exact True with a valid nepali match
|
|
81
|
+
province = _filter_location(
|
|
82
|
+
locations=locations.provinces, name_nepali="बागमती प्रदेश", exact=True
|
|
83
|
+
)
|
|
84
|
+
self.assertEqual(province.name_nepali, "बागमती प्रदेश")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class TestLocationsUtils(unittest.TestCase):
|
|
88
|
+
def test_utils_get_province(self):
|
|
89
|
+
province = get_province(name="Bagmati")
|
|
90
|
+
self.assertEqual(province.name, "Bagmati Province")
|
|
91
|
+
|
|
92
|
+
def test_utils_get_district(self):
|
|
93
|
+
district = get_district(name="Kathmandu")
|
|
94
|
+
self.assertEqual(district.name, "Kathmandu")
|
|
95
|
+
|
|
96
|
+
def test_utils_get_municipality(self):
|
|
97
|
+
municipality = get_municipality(name="Kathmandu")
|
|
98
|
+
self.assertEqual(municipality.name, "Kathmandu Metropolitan City")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class TestLocationsModels(unittest.TestCase):
|
|
102
|
+
def test_location_data(self):
|
|
103
|
+
location = Location("test_en", "test_ne")
|
|
104
|
+
self.assertEqual(location.name, "test_en")
|
|
105
|
+
self.assertEqual(location.name_nepali, "test_ne")
|
|
106
|
+
|
|
107
|
+
def test_location_str(self):
|
|
108
|
+
location = Location("test_en", "test_ne")
|
|
109
|
+
self.assertEqual(str(location), "test_en")
|
|
110
|
+
|
|
111
|
+
def test_location_repr(self):
|
|
112
|
+
location = Location("test_en", "test_ne")
|
|
113
|
+
self.assertEqual(repr(location), "test_en")
|
|
114
|
+
|
|
115
|
+
def test_districts_from_province(self):
|
|
116
|
+
province = Province("Province1", "Province1")
|
|
117
|
+
district = District(province, "District1", "District1")
|
|
118
|
+
self.assertListEqual(province.districts, [district])
|
|
119
|
+
|
|
120
|
+
def test_municipalities_from_province_and_district(self):
|
|
121
|
+
province = Province("Province1", "Province1")
|
|
122
|
+
district = District(province, "District1", "District1")
|
|
123
|
+
municipality = Municipality(
|
|
124
|
+
district, "Municipality1", "Municipality1", MunicipalityType.METROPOLITAN
|
|
125
|
+
)
|
|
126
|
+
self.assertListEqual(province.municipalities, [municipality])
|
|
127
|
+
self.assertListEqual(district.municipalities, [municipality])
|
|
128
|
+
|
|
129
|
+
def test_municipality_province_district_and_type(self):
|
|
130
|
+
province = Province("Province1", "Province1")
|
|
131
|
+
district = District(province, "District1", "District1")
|
|
132
|
+
municipality = Municipality(
|
|
133
|
+
district, "Municipality1", "Municipality1", MunicipalityType.METROPOLITAN
|
|
134
|
+
)
|
|
135
|
+
self.assertEqual(municipality.province, province)
|
|
136
|
+
self.assertEqual(municipality.district, district)
|
|
137
|
+
self.assertEqual(municipality.municipality_type, MunicipalityType.METROPOLITAN)
|
|
138
|
+
|
|
139
|
+
# MunicipalityType
|
|
140
|
+
def test_municipality_type_with_invalid_data(self):
|
|
141
|
+
with self.assertRaises(ValueError):
|
|
142
|
+
MunicipalityType("Hello")
|
|
143
|
+
|
|
144
|
+
def test_municipality_type_with_valid_data(self):
|
|
145
|
+
municipality_type = MunicipalityType("Metropolitan City")
|
|
146
|
+
self.assertEqual(municipality_type, MunicipalityType.METROPOLITAN)
|
|
147
|
+
|
|
148
|
+
def test_municipality_type_str(self):
|
|
149
|
+
municipality_type = MunicipalityType.RURAL_MUNICIPALITY
|
|
150
|
+
self.assertEqual(str(municipality_type), municipality_type.value)
|
|
151
|
+
|
|
152
|
+
def test_municipality_type_repr(self):
|
|
153
|
+
municipality_type = MunicipalityType.SUB_METROPOLITAN
|
|
154
|
+
self.assertEqual(repr(municipality_type), municipality_type.value)
|