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 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
- print("unknown gender code",event_gendercode)
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
- print("no course?",record)
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
- print("no course?",record)
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 (could be more or less than 4! FIXME)
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
- if rtype not in rtypes:
305
- rtypes[rtype]=0
306
- rtypes[rtype] = rtypes[rtype]+1
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
- print("exception on line",line)
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
@@ -86,6 +86,7 @@ def load(fileobjs):
86
86
  "place":None,
87
87
  "swimmer_ids":[cur_swimmer['swimmer_id']],
88
88
  "relay":False,
89
+ "dq":False,
89
90
  }
90
91
  entries.append(entry)
91
92
  teams = [value for _,value in teams.items()] # convert to array
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: swimstroke
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  License-File: LICENSE
5
5
  Requires-Dist: PyYAML >=6.0.1
6
6
 
@@ -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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.3)
2
+ Generator: setuptools (70.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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,,