swimstroke 0.1.1__py3-none-any.whl → 0.1.3__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.
- swimstroke/__main__.py +5 -3
- swimstroke/hy3.py +47 -10
- swimstroke/scb.py +1 -0
- {swimstroke-0.1.1.dist-info → swimstroke-0.1.3.dist-info}/METADATA +1 -1
- swimstroke-0.1.3.dist-info/RECORD +14 -0
- {swimstroke-0.1.1.dist-info → swimstroke-0.1.3.dist-info}/WHEEL +1 -1
- swimstroke-0.1.1.dist-info/RECORD +0 -14
- {swimstroke-0.1.1.dist-info → swimstroke-0.1.3.dist-info}/LICENSE +0 -0
- {swimstroke-0.1.1.dist-info → swimstroke-0.1.3.dist-info}/top_level.txt +0 -0
swimstroke/__main__.py
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
from .helpers import load, populate_events_entries, populate_heats
|
|
3
3
|
from .util import swimtimefmt
|
|
4
|
+
import logging
|
|
5
|
+
logging.basicConfig(level=logging.INFO)
|
|
4
6
|
|
|
5
7
|
for filename in sys.argv[1:]:
|
|
6
8
|
print(filename)
|
|
7
9
|
meetinfo = load(filename)
|
|
8
|
-
#print(repr(meetinfo.))
|
|
10
|
+
#print(repr(meetinfo.keys()))
|
|
9
11
|
|
|
10
12
|
populate_events_entries(meetinfo)
|
|
11
13
|
for event in meetinfo['events']:
|
|
@@ -17,7 +19,7 @@ for filename in sys.argv[1:]:
|
|
|
17
19
|
for entry in event['entries']:
|
|
18
20
|
#print(repr(entry))
|
|
19
21
|
if entry['relay']:
|
|
20
|
-
print(" * relay - ",entry['heat'],entry['lane'],entry['teamname'],', '.join([e['name'] for e in entry['swimmers']]),entry['event_type'])
|
|
22
|
+
print(" * relay - ",entry['heat'],entry['lane'],entry['teamname'],', '.join([e['name'] for e in entry['swimmers']]),entry['event_type'],"** DISQUALIFIED **" if entry['dq'] else "")
|
|
21
23
|
else:
|
|
22
|
-
print(" * ",entry['heat'],entry['lane'],entry['swimmers'][0]['name'],swimtimefmt(entry['seed_time_ms']),entry['event_type'])
|
|
24
|
+
print(" * ",entry['heat'],entry['lane'],entry['swimmers'][0]['name'],swimtimefmt(entry['seed_time_ms']),entry['event_type'],"** DISQUALIFIED **" if entry['dq'] else "")
|
|
23
25
|
|
swimstroke/hy3.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
from .util import *
|
|
2
|
+
import logging
|
|
3
|
+
logger = logging.getLogger(__name__)
|
|
2
4
|
|
|
3
5
|
HY3_STROKE_CODES = {
|
|
4
6
|
"A":"Freestyle",
|
|
@@ -50,7 +52,6 @@ def load(fo):
|
|
|
50
52
|
teams = meetinfo['teams']
|
|
51
53
|
swimmers = meetinfo['swimmers']
|
|
52
54
|
entries = meetinfo['entries']
|
|
53
|
-
rtypes = {}
|
|
54
55
|
line = 0
|
|
55
56
|
cur_swimmer = None
|
|
56
57
|
cur_entry = None
|
|
@@ -118,7 +119,7 @@ def load(fo):
|
|
|
118
119
|
distance = int(record[15:21].decode('latin'))
|
|
119
120
|
event_gendercode = record[14:15].decode('latin')
|
|
120
121
|
if event_gendercode not in HY3_EVENT_GENDER_CODES:
|
|
121
|
-
|
|
122
|
+
logger.warning("unknown gender code %s",event_gendercode)
|
|
122
123
|
#print("distance",repr(record[67:71]))
|
|
123
124
|
#print("event #",record[72:76])
|
|
124
125
|
event_num_str = record[38:42].decode('latin').strip()
|
|
@@ -161,7 +162,19 @@ def load(fo):
|
|
|
161
162
|
"seed_time_str":swimtimefmt(seed_time_ms),
|
|
162
163
|
"swimmer_ids":[cur_swimmer['swimmer_id']],
|
|
163
164
|
"relay":False,
|
|
165
|
+
"dq":False,
|
|
166
|
+
"points":None,
|
|
167
|
+
"place":None,
|
|
168
|
+
"splits":None,
|
|
164
169
|
}
|
|
170
|
+
|
|
171
|
+
points = record[62:68].decode('latin').strip()
|
|
172
|
+
if points:
|
|
173
|
+
points = float(points)
|
|
174
|
+
else:
|
|
175
|
+
points = None
|
|
176
|
+
cur_entry['points'] = points
|
|
177
|
+
|
|
165
178
|
entries.append(cur_entry)
|
|
166
179
|
|
|
167
180
|
elif rtype == b'E2': # continuation of an entry
|
|
@@ -183,7 +196,7 @@ def load(fo):
|
|
|
183
196
|
if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
|
|
184
197
|
cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
|
|
185
198
|
else:
|
|
186
|
-
|
|
199
|
+
logger.warning("no course found? %s",repr(record))
|
|
187
200
|
|
|
188
201
|
# results
|
|
189
202
|
cur_entry['result_time'] = record[4:11].decode('latin').strip()
|
|
@@ -193,6 +206,8 @@ def load(fo):
|
|
|
193
206
|
else:
|
|
194
207
|
cur_entry['result_time_ms'] = int(cur_entry['result_time'].replace('.',''),10)*10
|
|
195
208
|
|
|
209
|
+
cur_entry['dq'] = (record[12:13].decode('latin') == "Q")
|
|
210
|
+
|
|
196
211
|
place = record[31:33].decode('latin').strip()
|
|
197
212
|
if place == "":
|
|
198
213
|
cur_entry['place'] = None
|
|
@@ -251,8 +266,20 @@ def load(fo):
|
|
|
251
266
|
"seed_time_str":swimtimefmt(seed_time_ms),
|
|
252
267
|
"relay":True,
|
|
253
268
|
"teamname":relayname,
|
|
254
|
-
"swimmer_codes":[]
|
|
269
|
+
"swimmer_codes":[],
|
|
270
|
+
"dq":False,
|
|
271
|
+
"points":None,
|
|
272
|
+
"place":None,
|
|
273
|
+
"splits":None,
|
|
255
274
|
}
|
|
275
|
+
|
|
276
|
+
points = record[62:68].decode('latin').strip()
|
|
277
|
+
if points:
|
|
278
|
+
points = float(points)
|
|
279
|
+
else:
|
|
280
|
+
points = None
|
|
281
|
+
cur_entry['points'] = points
|
|
282
|
+
|
|
256
283
|
entries.append(cur_entry)
|
|
257
284
|
|
|
258
285
|
elif rtype == b'F2':
|
|
@@ -276,7 +303,7 @@ def load(fo):
|
|
|
276
303
|
if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
|
|
277
304
|
cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
|
|
278
305
|
else:
|
|
279
|
-
|
|
306
|
+
logger.warning("no course found in record? %s",repr(record))
|
|
280
307
|
|
|
281
308
|
# results
|
|
282
309
|
cur_entry['result_time'] = record[5:11].decode('latin').strip()
|
|
@@ -286,6 +313,8 @@ def load(fo):
|
|
|
286
313
|
else:
|
|
287
314
|
cur_entry['result_time_ms'] = int(cur_entry['result_time'].replace('.',''),10)*10
|
|
288
315
|
|
|
316
|
+
cur_entry['dq'] = (record[12:13].decode('latin') == "Q")
|
|
317
|
+
|
|
289
318
|
place = record[31:33].decode('latin').strip()
|
|
290
319
|
if place == "":
|
|
291
320
|
cur_entry['place'] = None
|
|
@@ -293,7 +322,7 @@ def load(fo):
|
|
|
293
322
|
cur_entry['place'] = int(place,10)
|
|
294
323
|
|
|
295
324
|
elif rtype == b'F3':
|
|
296
|
-
# load swimmers
|
|
325
|
+
# load swimmers for the relay
|
|
297
326
|
swimmercodes = []
|
|
298
327
|
for swimmerposn in [4,17,30,43,56,69,82,95]:
|
|
299
328
|
swimmercode = record[swimmerposn:swimmerposn+SWIMMER_CODE_LENGTH].decode('latin').lower()
|
|
@@ -301,11 +330,19 @@ def load(fo):
|
|
|
301
330
|
swimmercodes.append(swimmercode)
|
|
302
331
|
cur_entry['swimmer_codes'] = swimmercodes
|
|
303
332
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
333
|
+
elif rtype == b'G1':
|
|
334
|
+
if cur_entry['splits'] is None:
|
|
335
|
+
cur_entry['splits'] = []
|
|
336
|
+
for startidx in range(3,112,11):
|
|
337
|
+
laps = record[startidx:startidx+2].decode('latin').strip()
|
|
338
|
+
if not laps:
|
|
339
|
+
break # no more splits
|
|
340
|
+
laps = int(laps)
|
|
341
|
+
splittime = record[startidx+2:startidx+10].decode('latin').strip()
|
|
342
|
+
splittime = int(splittime.replace('.',''))*10 # convert to ms
|
|
343
|
+
cur_entry['splits'].append((laps*25,splittime))
|
|
307
344
|
except:
|
|
308
|
-
|
|
345
|
+
logger.exception("exception on line %d data %s", line, repr(record))
|
|
309
346
|
raise
|
|
310
347
|
|
|
311
348
|
# Make a mapping for all entries to swimmer IDs (which are more unique and useful than the swimmer codes)
|
swimstroke/scb.py
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
swimstroke/__init__.py,sha256=HyRSzghNy1qExTdycvl7MsVvwQ7vi3FtqUQbobhepRo,78
|
|
2
|
+
swimstroke/__main__.py,sha256=d0ln2BGuqyjDIB2OOmZEA4lOjPAjHARuzuo1_WomNZU,1212
|
|
3
|
+
swimstroke/ev3.py,sha256=Ma1TsRQAop7wQNoeRBdKBZuQyuRpq08OYzdS7dr_llI,3579
|
|
4
|
+
swimstroke/helpers.py,sha256=QA_GTUqVM7mYa_-n33e2AymBv76faV9_IGsNsv78GPw,6523
|
|
5
|
+
swimstroke/hy3.py,sha256=KwhRFHS0T81NrvWF22ek9kdiCWbN4bHJViPqVIV4HO8,15500
|
|
6
|
+
swimstroke/scb.py,sha256=ow-T4Ou6jC7PQdphARncM7T0hIzj20prD-C9JVBU6Y8,4307
|
|
7
|
+
swimstroke/sd3.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
|
|
8
|
+
swimstroke/util.py,sha256=5Xfvfngv9T47U_7gddiPw80pHtTAlhomW40JUGDS2iI,1244
|
|
9
|
+
swimstroke/yaml.py,sha256=KEZcsiMsq7TtWyxzZ06dzSm-oXJbipfKOybNNPmK8xE,6900
|
|
10
|
+
swimstroke-0.1.3.dist-info/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
|
|
11
|
+
swimstroke-0.1.3.dist-info/METADATA,sha256=66Ae9c2E2yBYG4tbRiEGpy6vhDgOmY1p2bjASjuqvA8,107
|
|
12
|
+
swimstroke-0.1.3.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
|
|
13
|
+
swimstroke-0.1.3.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
|
|
14
|
+
swimstroke-0.1.3.dist-info/RECORD,,
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
swimstroke/__init__.py,sha256=HyRSzghNy1qExTdycvl7MsVvwQ7vi3FtqUQbobhepRo,78
|
|
2
|
-
swimstroke/__main__.py,sha256=US-YR52wKJIZrr2KiCgZOwhALJM_8w_wPw7cUFA1HVQ,1063
|
|
3
|
-
swimstroke/ev3.py,sha256=Ma1TsRQAop7wQNoeRBdKBZuQyuRpq08OYzdS7dr_llI,3579
|
|
4
|
-
swimstroke/helpers.py,sha256=QA_GTUqVM7mYa_-n33e2AymBv76faV9_IGsNsv78GPw,6523
|
|
5
|
-
swimstroke/hy3.py,sha256=9bTkI5vnkgwUfnma58TUYvzt82R1HsznIZU9u_rf4fw,13992
|
|
6
|
-
swimstroke/scb.py,sha256=CYiYKe2HFpG43Ty2LA1Bdgk6mJSyheFw2Q_8_vWrf-E,4275
|
|
7
|
-
swimstroke/sd3.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
|
|
8
|
-
swimstroke/util.py,sha256=5Xfvfngv9T47U_7gddiPw80pHtTAlhomW40JUGDS2iI,1244
|
|
9
|
-
swimstroke/yaml.py,sha256=KEZcsiMsq7TtWyxzZ06dzSm-oXJbipfKOybNNPmK8xE,6900
|
|
10
|
-
swimstroke-0.1.1.dist-info/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
|
|
11
|
-
swimstroke-0.1.1.dist-info/METADATA,sha256=NWo41UNywuO4QggFH8HZyhZQry4lwHzcpNDqLRfl3Wc,107
|
|
12
|
-
swimstroke-0.1.1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
|
|
13
|
-
swimstroke-0.1.1.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
|
|
14
|
-
swimstroke-0.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|