cdxcore 0.1.5__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.

Potentially problematic release.


This version of cdxcore might be problematic. Click here for more details.

tests/test_util.py ADDED
@@ -0,0 +1,329 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Tue Apr 14 21:24:52 2020
4
+ @author: hansb
5
+ """
6
+
7
+ import unittest as unittest
8
+ import numpy as np
9
+ import datetime as datetime
10
+ from zoneinfo import ZoneInfo
11
+
12
+ """
13
+ import importlib as imp
14
+ import source.util as _
15
+ imp.reload(_)
16
+ """
17
+ from cdxcore.util import isFunction, isAtomic, isFloat
18
+ from cdxcore.util import fmt, fmt_seconds, fmt_list, fmt_dict, fmt_big_number, fmt_digits, fmt_big_byte_number, fmt_datetime, fmt_date, fmt_time, fmt_timedelta, fmt_filename, DEF_FILE_NAME_MAP
19
+
20
+ class UtilTest(unittest.TestCase):
21
+
22
+ def test_fmt(self):
23
+
24
+ self.assertEqual(fmt("number %d %d",1,2),"number 1 2")
25
+ self.assertEqual(fmt("number %(two)d %(one)d",one=1,two=2),"number 2 1")
26
+
27
+ with self.assertRaises(KeyError):
28
+ fmt("number %(two)d %(one)d",one=1)
29
+ with self.assertRaises(TypeError):
30
+ fmt("number %d %d",1)
31
+ with self.assertRaises(TypeError):
32
+ fmt("number %d %d",1,2,3)
33
+
34
+ # fmt_seconds
35
+ self.assertEqual(fmt_seconds(10.212),"10s")
36
+ self.assertEqual(fmt_seconds(1.0212),"1s")
37
+ self.assertEqual(fmt_seconds(0.10212),"0.1s")
38
+ self.assertEqual(fmt_seconds(0.0010212),"1.02ms")
39
+
40
+ # fmt_list
41
+ self.assertEqual(fmt_list([2,5.,3]), "2, 5.0 and 3")
42
+ self.assertEqual(fmt_list([2,5.,3],link=""), "2, 5.0, 3")
43
+ self.assertEqual(fmt_list([2,5.,3],link=","), "2, 5.0, 3")
44
+ self.assertEqual(fmt_list([2,5.,3],link=", and"), "2, 5.0, and 3")
45
+ self.assertEqual(fmt_list(sorted([2,5.,3])), "2, 3 and 5.0")
46
+ self.assertEqual(fmt_list([2,5.,3],sort=True), "2, 3 and 5.0")
47
+ self.assertEqual(fmt_list(i for i in [2,3,5.]), "2, 3 and 5.0")
48
+ self.assertEqual(fmt_list([1.]), "1.0")
49
+ self.assertEqual(fmt_list([]), "-")
50
+ self.assertEqual(fmt_list([], none="X"), "X")
51
+
52
+ # fmt_dict
53
+ self.assertEqual(fmt_dict( dict(y=2, x=1, z=3) ),"y: 2, x: 1 and z: 3")
54
+ self.assertEqual(fmt_dict( dict(y=2, x=1, z=3), sort=True ),"x: 1, y: 2 and z: 3")
55
+ self.assertEqual(fmt_dict( dict(y=2, x=1, z=3), sort=True, link=", and" ),"x: 1, y: 2, and z: 3")
56
+
57
+ # fmt_big_number
58
+ self.assertEqual(fmt_digits(1), "1")
59
+ self.assertEqual(fmt_digits(0), "0")
60
+ self.assertEqual(fmt_digits(-1), "-1")
61
+ self.assertEqual(fmt_digits(999), "999")
62
+ self.assertEqual(fmt_digits(1000), "1,000")
63
+ self.assertEqual(fmt_digits(1001), "1,001")
64
+ self.assertEqual(fmt_digits(9999), "9,999")
65
+ self.assertEqual(fmt_digits(10000), "10,000")
66
+ self.assertEqual(fmt_digits(123456789), "123,456,789")
67
+ self.assertEqual(fmt_digits(-123456789), "-123,456,789")
68
+
69
+ # fmt_big_number
70
+ self.assertEqual(fmt_big_number(1), "1")
71
+ self.assertEqual(fmt_big_number(999), "999")
72
+ self.assertEqual(fmt_big_number(1000), "1000")
73
+ self.assertEqual(fmt_big_number(1001), "1001")
74
+ self.assertEqual(fmt_big_number(9999), "9999")
75
+ self.assertEqual(fmt_big_number(10000), "10K")
76
+ self.assertEqual(fmt_big_number(10001), "10K")
77
+ self.assertEqual(fmt_big_number(10010), "10.01K")
78
+ self.assertEqual(fmt_big_number(10100), "10.1K")
79
+ self.assertEqual(fmt_big_number(12345), "12.35K")
80
+ self.assertEqual(fmt_big_number(123456789), "123.46M")
81
+ self.assertEqual(fmt_big_number(12345678912), "12.35B")
82
+ self.assertEqual(fmt_big_number(1234567890123456789), "1,234,567.89T")
83
+ self.assertEqual(fmt_big_number(-123456789), "-123.46M")
84
+
85
+ # fmt_big_byte_number
86
+ self.assertEqual(fmt_big_byte_number(0), "0 bytes")
87
+ self.assertEqual(fmt_big_byte_number(1), "1 byte")
88
+ self.assertEqual(fmt_big_byte_number(2), "2 bytes")
89
+ self.assertEqual(fmt_big_byte_number(-1), "-1 byte")
90
+ self.assertEqual(fmt_big_byte_number(-2), "-2 bytes")
91
+ self.assertEqual(fmt_big_byte_number(1024*10-1), "10239 bytes")
92
+ self.assertEqual(fmt_big_byte_number(1024*10), "10KB")
93
+ self.assertEqual(fmt_big_byte_number(1024*10+1), "10KB")
94
+ self.assertEqual(fmt_big_byte_number(1024*10+10), "10.01KB")
95
+ self.assertEqual(fmt_big_byte_number(12345), "12.06KB")
96
+ self.assertEqual(fmt_big_byte_number(123456789), "117.74MB")
97
+ self.assertEqual(fmt_big_byte_number(12345678912), "11.5GB")
98
+ self.assertEqual(fmt_big_byte_number(1234567890123456789), "1,122,832.96TB")
99
+ self.assertEqual(fmt_big_byte_number(-123456789), "-117.74MB")
100
+
101
+ self.assertEqual(fmt_big_byte_number(0,str_B=False), "0")
102
+ self.assertEqual(fmt_big_byte_number(1,str_B=False), "1")
103
+ self.assertEqual(fmt_big_byte_number(2,str_B=False), "2")
104
+ self.assertEqual(fmt_big_byte_number(-1,str_B=False), "-1")
105
+ self.assertEqual(fmt_big_byte_number(-2,str_B=False), "-2")
106
+ self.assertEqual(fmt_big_byte_number(1024*10-1,str_B=False), "10239")
107
+ self.assertEqual(fmt_big_byte_number(1024*10,str_B=False), "10K")
108
+ self.assertEqual(fmt_big_byte_number(1024*10+1,str_B=False), "10K")
109
+ self.assertEqual(fmt_big_byte_number(1024*10+10,str_B=False), "10.01K")
110
+ self.assertEqual(fmt_big_byte_number(12345,str_B=False), "12.06K")
111
+ self.assertEqual(fmt_big_byte_number(123456789,str_B=False), "117.74M")
112
+ self.assertEqual(fmt_big_byte_number(12345678912,str_B=False), "11.5G")
113
+ self.assertEqual(fmt_big_byte_number(1234567890123456789,str_B=False), "1,122,832.96T")
114
+ self.assertEqual(fmt_big_byte_number(-123456789,str_B=False), "-117.74M")
115
+
116
+ # fmt_datetime
117
+ tz = ZoneInfo("America/New_York")
118
+ tz2 = ZoneInfo("Asia/Tokyo")
119
+ tz3 = ZoneInfo("GMT")
120
+ plain = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3 )
121
+ timz = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3, tzinfo=tz )
122
+ micro = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3, microsecond=3232 )
123
+ lots = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3, microsecond=3232, tzinfo=tz )
124
+ lots2 = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3, microsecond=0, tzinfo=tz2 )
125
+ lots3 = datetime.datetime( year=1974, month=3, day=17, hour=16, minute=2, second=3, microsecond=0, tzinfo=tz3 )
126
+ self.assertEqual(plain.tzinfo,None)
127
+ self.assertNotEqual(lots.tzinfo,None)
128
+ self.assertEqual(fmt_datetime(plain), "1974-03-17 16:02:03")
129
+ self.assertEqual(fmt_datetime(plain, sep=''), "1974-03-17 160203")
130
+ self.assertEqual(fmt_datetime(plain.date()), "1974-03-17")
131
+ self.assertEqual(fmt_datetime(plain.time()), "16:02:03")
132
+ self.assertEqual(fmt_datetime(micro), "1974-03-17 16:02:03,3232")
133
+ self.assertEqual(fmt_datetime(micro,ignore_ms=True), "1974-03-17 16:02:03")
134
+ self.assertEqual(fmt_datetime(micro.date()), "1974-03-17")
135
+ self.assertEqual(fmt_datetime(micro.time()), "16:02:03,3232")
136
+ self.assertEqual(fmt_datetime(timz), "1974-03-17 16:02:03")
137
+ self.assertEqual(fmt_datetime(timz.date()), "1974-03-17")
138
+ self.assertEqual(fmt_datetime(timz.time()), "16:02:03")
139
+ self.assertEqual(fmt_datetime(timz.timetz()), "16:02:03")
140
+ self.assertEqual(fmt_datetime(timz.timetz(),ignore_tz=False), "16:02:03")
141
+ self.assertEqual(fmt_datetime(lots), "1974-03-17 16:02:03,3232")
142
+ self.assertEqual(fmt_datetime(lots,ignore_ms=True), "1974-03-17 16:02:03")
143
+ self.assertEqual(fmt_datetime(lots.date()), "1974-03-17")
144
+ self.assertEqual(fmt_datetime(lots.time()), "16:02:03,3232")
145
+ self.assertEqual(fmt_datetime(lots.timetz()), "16:02:03,3232")
146
+ self.assertEqual(fmt_datetime(lots,ignore_tz=False), "1974-03-17 16:02:03,3232-4")
147
+ self.assertEqual(fmt_datetime(lots,ignore_ms=True,ignore_tz=False), "1974-03-17 16:02:03-4")
148
+ self.assertEqual(fmt_datetime(lots.date(),ignore_tz=False), "1974-03-17")
149
+ self.assertEqual(fmt_datetime(lots.time(),ignore_tz=False), "16:02:03,3232") # timezone for time's is not supported
150
+ self.assertEqual(fmt_datetime(lots.timetz(),ignore_tz=False), "16:02:03,3232") # timezone for time's is not supported
151
+ self.assertEqual(fmt_datetime(lots2,ignore_tz=False), "1974-03-17 16:02:03+9")
152
+ self.assertEqual(fmt_datetime(lots2,ignore_ms=True,ignore_tz=False), "1974-03-17 16:02:03+9")
153
+ self.assertEqual(fmt_datetime(lots2.date(),ignore_tz=False), "1974-03-17")
154
+ self.assertEqual(fmt_datetime(lots2.timetz(),ignore_tz=False), "16:02:03") # timezone for time's is not supported
155
+ self.assertEqual(fmt_datetime(lots3,ignore_tz=False), "1974-03-17 16:02:03")
156
+ self.assertEqual(fmt_datetime(lots3,ignore_ms=True,ignore_tz=False), "1974-03-17 16:02:03")
157
+ self.assertEqual(fmt_datetime(lots3.date(),ignore_tz=False), "1974-03-17")
158
+ self.assertEqual(fmt_datetime(lots3.timetz(),ignore_tz=False), "16:02:03") # timezone for time's is not supported
159
+
160
+ # fmt_date
161
+ self.assertEqual(fmt_date(plain), "1974-03-17" )
162
+ self.assertEqual(fmt_date(datetime.date( year=2001, month=2, day=3 )), "2001-02-03" )
163
+
164
+ # fmt_time
165
+ self.assertEqual(fmt_time(plain), "16:02:03" )
166
+ self.assertEqual(fmt_time(micro), "16:02:03,3232" )
167
+ self.assertEqual(fmt_time(micro, sep="."), "16.02.03,3232")
168
+ self.assertEqual(fmt_time(micro, sep=".", ignore_ms=True), "16.02.03")
169
+ self.assertEqual(fmt_time(datetime.time( hour=1, minute=2, second=3, microsecond=4 )), "01:02:03,4")
170
+
171
+ # fmt_timedelta
172
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=2, seconds=2+60*3+60*60*4, microseconds=1 )), "+2d4h3m2s1ms")
173
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=2+60*3+60*60*4, microseconds=1 )), "+4h3m2s1ms")
174
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=-(2+60*3+60*60*4), microseconds=-1 )), "-4h3m2s1ms")
175
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=-(2+60*3+60*60*4), microseconds=1 )), "-4h3m1s999999ms")
176
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=(2+60*3+60*60*4), microseconds=-1 )), "+4h3m1s999999ms")
177
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=2+60*3, microseconds=1 )), "+3m2s1ms")
178
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=2, microseconds=1 )), "+2s1ms")
179
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=1 )), "+1ms")
180
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=-1 )), "-1ms")
181
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=0 )), "")
182
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=1, microseconds=-1000000 )), "")
183
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=2, seconds=2+60*3+60*60*4, microseconds=1 ), sep="::,"), "+2d:4h:3m:2s,1ms")
184
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=2+60*3+60*60*4, microseconds=1 ), sep="::,"), "+4h:3m:2s,1ms")
185
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=-(2+60*3+60*60*4), microseconds=-1 ), sep="::,"), "-4h:3m:2s,1ms")
186
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=-(2+60*3+60*60*4), microseconds=1 ), sep="::,"), "-4h:3m:1s,999999ms")
187
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=0, seconds=(2+60*3+60*60*4), microseconds=-1 ), sep="::,"), "+4h:3m:1s,999999ms")
188
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=2+60*3, microseconds=1 ), sep="::,"), "+3m:2s,1ms")
189
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=2, microseconds=1 ), sep="::,"), "+2s,1ms")
190
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=1 ), sep="::,"), "+1ms")
191
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=-1 ), sep="::,"), "-1ms")
192
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=0, microseconds=0 ), sep="::,"), "")
193
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=1, microseconds=-1000000 ), sep="::,"), "")
194
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=-2, seconds=-2-60*3, microseconds=-1 ), sep=" _"), "-2d 3m 2s_1ms")
195
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=-2-60*3, microseconds=-1 ), sep=" _"), "-3m 2s_1ms")
196
+ self.assertEqual(fmt_timedelta(datetime.timedelta( seconds=-2-60*3, microseconds=-1 ), sep=''), "-3m2s1ms")
197
+ self.assertEqual(fmt_timedelta(datetime.timedelta( days=-2, seconds=-2-60*3-60*60*4, microseconds=-1 ), sep=[";", "", "_"] ), "-2d;4h3m2s_1ms")
198
+
199
+ # fmt_filename
200
+ self.assertEqual( DEF_FILE_NAME_MAP, {
201
+ '/' : "_",
202
+ '\\': "_",
203
+ '|' : "_",
204
+ ':' : ";",
205
+ '>' : ")",
206
+ '<' : "(",
207
+ '?' : "!",
208
+ '*' : "@",
209
+ } )
210
+ self.assertEqual( fmt_filename("2*2/4=x"), "2@2_4=x" )
211
+ self.assertEqual( fmt_filename("K:X;Z"), "K;X;Z" )
212
+ self.assertEqual( fmt_filename("*"), "@" )
213
+ self.assertEqual( fmt_filename("."), "." ) # technically a valid filename, but a reserved name at that
214
+
215
+ def test_basics(self):
216
+
217
+ # isFunction
218
+ self.assertFalse( isFunction(1) )
219
+ self.assertFalse( isFunction("text") )
220
+ self.assertTrue( isFunction(self.test_basics) )
221
+ self.assertTrue( isFunction(lambda x: x) )
222
+
223
+ def f(x,y):
224
+ return x
225
+ self.assertTrue( isFunction(f) )
226
+ def ff():
227
+ self.assertTrue( isFunction(ff) )
228
+ ff()
229
+
230
+ class A(object):
231
+ def __init__(self, x=1):
232
+ self.x = x
233
+ def f(self, y):
234
+ return self.x*y
235
+ @property
236
+ def square(self):
237
+ return self.x**2
238
+ @staticmethod
239
+ def g(y):
240
+ return y**2
241
+ class B(object):
242
+ def __call__(self, x):
243
+ return x**2
244
+ class C(object):
245
+ def __iter__(self):
246
+ for i in range(5):
247
+ yield i
248
+
249
+ a = A()
250
+ b = B()
251
+ c = C()
252
+ self.assertFalse( isFunction(A) )
253
+ self.assertFalse( isFunction(B) )
254
+ self.assertFalse( isFunction(C) )
255
+ self.assertFalse( isFunction(a) )
256
+ self.assertFalse( isFunction(b) )
257
+ self.assertFalse( isFunction(c) )
258
+ self.assertTrue( isFunction(A.__init__) )
259
+ self.assertTrue( isFunction(A.f) )
260
+ self.assertFalse( isFunction(A.square) )
261
+ self.assertTrue( isFunction(A.g) )
262
+ self.assertTrue( isFunction(a.__init__) )
263
+ self.assertTrue( isFunction(a.f) )
264
+ self.assertFalse( isFunction(a.square) ) # <-- properties are not considered as function
265
+ self.assertTrue( isFunction(a.g) )
266
+ self.assertTrue( isFunction(B.__init__) )
267
+ self.assertTrue( isFunction(B.__call__ ) )
268
+ self.assertTrue( isFunction(b.__init__) )
269
+ self.assertTrue( isFunction(b.__call__ ) )
270
+ self.assertFalse( isFunction(b) ) # <-- properties are not considered as function
271
+ self.assertTrue( callable(b) )
272
+ self.assertFalse( isFunction(c) )
273
+ self.assertTrue( isFunction(i for i in c) )
274
+ self.assertTrue( isFunction(lambda x : x*x) )
275
+
276
+ # isAtomic
277
+ self.assertTrue( isAtomic(0) )
278
+ self.assertTrue( isAtomic(0.1) )
279
+ self.assertTrue( isAtomic("c") )
280
+ self.assertFalse( isAtomic(b'\x02') )
281
+ self.assertTrue( isAtomic("text") )
282
+ self.assertFalse( isAtomic(complex(0.,-1)) )
283
+ self.assertTrue( isAtomic(True) )
284
+ self.assertTrue( isAtomic(1==0) )
285
+ self.assertTrue( isAtomic(datetime.date(year=2005, month=2, day=1)) )
286
+ self.assertFalse( isAtomic(datetime.time(hour=4)) )
287
+ self.assertFalse( isAtomic(datetime.datetime(year=2005, month=2, day=1, hour=4)) )
288
+ self.assertTrue( isAtomic(1==0) )
289
+ self.assertTrue( isAtomic(1==0) )
290
+ self.assertFalse( isAtomic(A) )
291
+ self.assertFalse( isAtomic(a) )
292
+ self.assertFalse( isAtomic(f) )
293
+ self.assertFalse( isAtomic([1,2]) )
294
+ self.assertFalse( isAtomic([]) )
295
+ self.assertFalse( isAtomic({}) )
296
+ self.assertFalse( isAtomic({'x':2}) )
297
+ self.assertFalse( isAtomic({'x':2}) )
298
+
299
+ self.assertEqual( isAtomic(np.int_(0)), True )
300
+ self.assertEqual( isAtomic(np.int32(0)), True )
301
+ self.assertEqual( isAtomic(np.int64(0)), True )
302
+ self.assertEqual( isAtomic(np.complex128(0)), True )
303
+ self.assertEqual( isAtomic(np.datetime64()), True )
304
+ self.assertEqual( isAtomic(np.timedelta64()), True )
305
+ self.assertEqual( isAtomic(np.ushort(0)), True )
306
+ self.assertEqual( isAtomic(np.float32(0)), True )
307
+ self.assertEqual( isAtomic(np.float64(0)), True )
308
+ self.assertEqual( isAtomic(np.ulonglong(0)), True )
309
+ self.assertEqual( isAtomic(np.longdouble(0)), True )
310
+ self.assertEqual( isAtomic(np.half(0)), True )
311
+
312
+ # isFloat
313
+ self.assertFalse( isFloat(0) )
314
+ self.assertTrue( isFloat(0.1) )
315
+ self.assertFalse( isFloat(1==2) )
316
+ self.assertFalse( isFloat("0.1") )
317
+ self.assertFalse( isFloat(complex(0.,-1.)) )
318
+ self.assertTrue( isFloat(np.float16(0.1)) )
319
+ self.assertTrue( isFloat(np.float32(0.1)) )
320
+ self.assertTrue( isFloat(np.float64(0.1)) )
321
+ self.assertFalse( isFloat(np.int16(0.1)) )
322
+ self.assertFalse( isFloat(np.int32(0.1)) )
323
+ self.assertFalse( isFloat(np.int64(0.1)) )
324
+ self.assertFalse( isFloat(np.complex64(0.1)) )
325
+
326
+ if __name__ == '__main__':
327
+ unittest.main()
328
+
329
+
up/git_message.py ADDED
@@ -0,0 +1,7 @@
1
+ """
2
+ Produce message with cdxbasics code
3
+ """
4
+
5
+ import cdxbasics as cdxbasics
6
+ print("Code base %s" % cdxbasics.__version__)
7
+
up/pip_modify_setup.py ADDED
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ """
4
+ Upgrade version in __init__
5
+ """
6
+
7
+ init_file = "./cdxcore/__init__.py"
8
+ with open(init_file, "rt") as fh:
9
+ init = fh.read()
10
+ find_str = '__version__ = "'
11
+ i = init.find(find_str)
12
+ assert i>0, "Error: cannot find string '%s' in cdxcore/__init__.py" % find_str
13
+ i += len(find_str)
14
+ data = init[i:]
15
+ start = init[:i]
16
+ i = data.find('"')
17
+ assert i>=0, "Error: cannot find closing quotation marks"
18
+ end = data[i:]
19
+ data = data[:i]
20
+ x = [ int(i) for i in data.split('.') ]
21
+ assert len(x) == 3, "Error: found %s not a version ID" % data.split(".")
22
+ x[-1] += 1
23
+ version = "%ld.%ld.%ld" % ( x[0], x[1], x[2] )
24
+ new_file = start + version + end
25
+
26
+ with open(init_file, "wt") as fh:
27
+ fh.write(new_file)
28
+ print("Upgraded package version to %s in %s" % (version,init_file))
29
+
30
+ """
31
+ Upgrade version in setup.py
32
+ """
33
+
34
+ setup_file = "./pyproject.toml"
35
+ with open(setup_file, "rt") as fh:
36
+ init = fh.read()
37
+ find_str = 'version="'
38
+ i = init.find(find_str)
39
+ if i==-1:
40
+ find_str = 'version = "'
41
+ i = init.find(find_str)
42
+ assert i>0, "Error: cannot find string '%s' in setup.py" % find_str
43
+ i += len(find_str)
44
+ data = init[i:]
45
+ start = init[:i]
46
+ i = data.find('"')
47
+ assert i>=0, "Error: cannot find closing quotation marks"
48
+ end = data[i:]
49
+ data = data[:i]
50
+ new_file = start + version + end
51
+
52
+ with open(setup_file, "wt") as fh:
53
+ fh.write(new_file)
54
+ print("Upgraded package version to %s in %s" % (version,setup_file))
55
+