swimstroke 0.1.8__py3-none-any.whl → 0.1.9__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/ev3.py +17 -8
- swimstroke/helpers.py +5 -1
- swimstroke/hy3.py +39 -15
- swimstroke/scb.py +2 -0
- swimstroke/util.py +6 -0
- {swimstroke-0.1.8.dist-info → swimstroke-0.1.9.dist-info}/METADATA +1 -1
- swimstroke-0.1.9.dist-info/RECORD +14 -0
- swimstroke-0.1.8.dist-info/RECORD +0 -14
- {swimstroke-0.1.8.dist-info → swimstroke-0.1.9.dist-info}/WHEEL +0 -0
- {swimstroke-0.1.8.dist-info → swimstroke-0.1.9.dist-info}/licenses/LICENSE +0 -0
- {swimstroke-0.1.8.dist-info → swimstroke-0.1.9.dist-info}/top_level.txt +0 -0
swimstroke/ev3.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .hy3 import HY3_EVENT_TYPE_CODES, HY3_STROKE_CODES, HY3_STROKE_CODES_SHORT, HY3_EVENT_COURSE_CODES
|
|
2
2
|
import datetime, csv, codecs
|
|
3
|
-
from .util import swimtime_strtoms
|
|
3
|
+
from .util import swimtime_strtoms, try_int
|
|
4
4
|
|
|
5
5
|
GENDER_CODES = {
|
|
6
6
|
"M":"Men",
|
|
@@ -56,16 +56,25 @@ def load(fo):
|
|
|
56
56
|
"distance":int(eventinfo_line[8]),
|
|
57
57
|
"relay":eventinfo_line[4]=="R",
|
|
58
58
|
"type":HY3_EVENT_TYPE_CODES[eventinfo_line[2]],
|
|
59
|
+
"age_from":None,
|
|
60
|
+
"age_to":None,
|
|
59
61
|
"eligibility":[],
|
|
60
62
|
"entries":[],
|
|
61
63
|
"num_heats":None
|
|
62
64
|
}
|
|
63
65
|
meetinfo['events'].append(eventinfo)
|
|
64
|
-
|
|
66
|
+
|
|
67
|
+
age_from = try_int(eventinfo_line[6])
|
|
68
|
+
age_to = try_int(eventinfo_line[7])
|
|
69
|
+
if eventinfo['age_from'] is None or age_from<eventinfo['age_from']:
|
|
70
|
+
eventinfo['age_from'] = age_from
|
|
71
|
+
if eventinfo['age_to'] is None or age_to>eventinfo['age_to']:
|
|
72
|
+
eventinfo['age_to'] = age_to
|
|
73
|
+
|
|
65
74
|
if eventinfo_line[16].strip():
|
|
66
75
|
eventinfo['eligibility'].append({
|
|
67
|
-
"age_from":
|
|
68
|
-
"age_to":
|
|
76
|
+
"age_from":age_from,
|
|
77
|
+
"age_to":age_to,
|
|
69
78
|
"time_ms":swimtime_strtoms(eventinfo_line[16].strip()),
|
|
70
79
|
"course":"LCM",
|
|
71
80
|
"gendercode":eventinfo_line[5],
|
|
@@ -73,8 +82,8 @@ def load(fo):
|
|
|
73
82
|
})
|
|
74
83
|
if eventinfo_line[18].strip():
|
|
75
84
|
eventinfo['eligibility'].append({
|
|
76
|
-
"age_from":
|
|
77
|
-
"age_to":
|
|
85
|
+
"age_from":age_from,
|
|
86
|
+
"age_to":age_to,
|
|
78
87
|
"time_ms":swimtime_strtoms(eventinfo_line[18].strip()),
|
|
79
88
|
"course":"SCM",
|
|
80
89
|
"gendercode":eventinfo_line[5],
|
|
@@ -82,8 +91,8 @@ def load(fo):
|
|
|
82
91
|
})
|
|
83
92
|
if not (eventinfo_line[16].strip() or eventinfo_line[18].strip()):
|
|
84
93
|
eventinfo['eligibility'].append({
|
|
85
|
-
"age_from":
|
|
86
|
-
"age_to":
|
|
94
|
+
"age_from":age_from,
|
|
95
|
+
"age_to":age_to,
|
|
87
96
|
"time_ms":None,
|
|
88
97
|
"gendercode":eventinfo_line[5],
|
|
89
98
|
"gender":GENDER_CODES[eventinfo_line[5]],
|
swimstroke/helpers.py
CHANGED
|
@@ -104,11 +104,14 @@ def build_events_from_entries(meetinfo):
|
|
|
104
104
|
"distance":entry['distance'],
|
|
105
105
|
"relay":entry['relay'],
|
|
106
106
|
"type":entry.get('event_type',None),
|
|
107
|
+
"age_from":entry['event_age_from'],
|
|
108
|
+
"age_to":entry['event_age_to'],
|
|
107
109
|
"eligibility":None,
|
|
108
110
|
"num_heats":None
|
|
109
111
|
}
|
|
110
112
|
event = events_by_key[event_key]
|
|
111
113
|
|
|
114
|
+
# TODO: include age in the name?
|
|
112
115
|
name = "%s %d %s"%(event['gender'],event['distance'],event['strokeshort'])
|
|
113
116
|
if entry['relay']:
|
|
114
117
|
name += " Relay"
|
|
@@ -161,7 +164,8 @@ def get_lanes(meetinfo):
|
|
|
161
164
|
if 'entries' in meetinfo:
|
|
162
165
|
lanes = []
|
|
163
166
|
for entry in meetinfo['entries']:
|
|
164
|
-
if
|
|
167
|
+
# if heat is 0, then this isn't a valid lane entry
|
|
168
|
+
if entry['heat'] is not None and entry['heat']!="0" and entry['lane'] is not None and entry['lane'] not in lanes:
|
|
165
169
|
lanes.append(entry['lane'])
|
|
166
170
|
lanes.sort()
|
|
167
171
|
return lanes
|
swimstroke/hy3.py
CHANGED
|
@@ -60,6 +60,7 @@ def load(fo):
|
|
|
60
60
|
_swimmer_code_to_ids = {}
|
|
61
61
|
_team_short_names = set()
|
|
62
62
|
already_e2_submitted = False
|
|
63
|
+
default_course_code = None
|
|
63
64
|
while ((record := fo.read(132))):
|
|
64
65
|
line += 1
|
|
65
66
|
try:
|
|
@@ -71,10 +72,15 @@ def load(fo):
|
|
|
71
72
|
meetinfo['startdate'] = _mmddyyyy_date_to_iso_date(startdate_str)
|
|
72
73
|
enddate_str = record[100:108].decode('latin').strip()
|
|
73
74
|
meetinfo['enddate'] = _mmddyyyy_date_to_iso_date(enddate_str)
|
|
75
|
+
elif rtype == b'B2':
|
|
76
|
+
default_course_code = record[98:99].decode('latin').strip()
|
|
77
|
+
if len(default_course_code)==0:
|
|
78
|
+
default_course_code = None
|
|
74
79
|
elif rtype == b"C1":
|
|
75
80
|
cur_team = {
|
|
76
81
|
"short_name":record[2:7].decode('latin').strip(),
|
|
77
82
|
"name":record[7:37].decode('latin').strip(),
|
|
83
|
+
"region":record[53:55].decode('latin').strip(), # the State in the USA
|
|
78
84
|
}
|
|
79
85
|
# don't add duplicates (some files have them...)
|
|
80
86
|
if cur_team['short_name'] not in _team_short_names:
|
|
@@ -153,15 +159,20 @@ def load(fo):
|
|
|
153
159
|
seed_time = None
|
|
154
160
|
seed_time_ms = None
|
|
155
161
|
|
|
162
|
+
event_age_from = int(record[22:25].decode('latin').strip())
|
|
163
|
+
event_age_to = int(record[25:28].decode('latin').strip())
|
|
164
|
+
|
|
156
165
|
cur_entry = {
|
|
157
166
|
"event_index":event_num_str,
|
|
158
167
|
"event_gendercode":event_gendercode,
|
|
159
168
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
160
|
-
"event_course":None,
|
|
161
|
-
"event_coursecode":
|
|
169
|
+
"event_course":HY3_EVENT_COURSE_CODES[default_course_code] if default_course_code is not None and default_course_code in HY3_EVENT_COURSE_CODES else None,
|
|
170
|
+
"event_coursecode":default_course_code,
|
|
162
171
|
"event_typecode":None,
|
|
163
172
|
"event_type":"Final", # is this the correct default?
|
|
164
173
|
"event_date":None,
|
|
174
|
+
"event_age_from":event_age_from,
|
|
175
|
+
"event_age_to":event_age_to,
|
|
165
176
|
"heat":None,
|
|
166
177
|
"heat_number":None,
|
|
167
178
|
"lane":None,
|
|
@@ -216,11 +227,15 @@ def load(fo):
|
|
|
216
227
|
event_datestr = record[87:95].decode('latin').strip()
|
|
217
228
|
cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(event_datestr)
|
|
218
229
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
230
|
+
# override the default with what the file says
|
|
231
|
+
event_coursecode = record[11:12].decode('latin').strip()
|
|
232
|
+
if len(event_coursecode):
|
|
233
|
+
cur_entry['event_coursecode'] = event_coursecode
|
|
234
|
+
if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
|
|
235
|
+
cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
|
|
236
|
+
else:
|
|
237
|
+
#logger.warning("no course found in record? %s",repr(record))
|
|
238
|
+
pass
|
|
224
239
|
|
|
225
240
|
# results
|
|
226
241
|
cur_entry['result_time'] = record[4:11].decode('latin').strip()
|
|
@@ -271,6 +286,9 @@ def load(fo):
|
|
|
271
286
|
seed_time_ms = None
|
|
272
287
|
seed_time = None
|
|
273
288
|
|
|
289
|
+
event_age_from = int(record[22:25].decode('latin').strip())
|
|
290
|
+
event_age_to = int(record[25:28].decode('latin').strip())
|
|
291
|
+
|
|
274
292
|
cur_entry = {
|
|
275
293
|
"event_index":event_num_str,
|
|
276
294
|
"heat":None,
|
|
@@ -278,10 +296,12 @@ def load(fo):
|
|
|
278
296
|
"lane":None,
|
|
279
297
|
"event_gendercode":event_gendercode,
|
|
280
298
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
281
|
-
"event_course":None,
|
|
282
|
-
"event_coursecode":
|
|
299
|
+
"event_course":HY3_EVENT_COURSE_CODES[default_course_code] if default_course_code is not None and default_course_code in HY3_EVENT_COURSE_CODES else None,
|
|
300
|
+
"event_coursecode":default_course_code,
|
|
283
301
|
"event_typecode":None,
|
|
284
302
|
"event_type":"Final", # is this the correct default?
|
|
303
|
+
"event_age_from":event_age_from,
|
|
304
|
+
"event_age_to":event_age_to,
|
|
285
305
|
"stroke":HY3_STROKE_CODES[strokecode],
|
|
286
306
|
"strokeshort":HY3_STROKE_CODES_SHORT[strokecode],
|
|
287
307
|
"distance":distance,
|
|
@@ -328,12 +348,16 @@ def load(fo):
|
|
|
328
348
|
|
|
329
349
|
event_datestr = record[102:110].decode('latin').strip()
|
|
330
350
|
cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(event_datestr)
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
351
|
+
|
|
352
|
+
# override the default with what the file says
|
|
353
|
+
event_coursecode = record[11:12].decode('latin').strip()
|
|
354
|
+
if len(event_coursecode):
|
|
355
|
+
cur_entry['event_coursecode'] = event_coursecode
|
|
356
|
+
if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
|
|
357
|
+
cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
|
|
358
|
+
else:
|
|
359
|
+
#logger.warning("no course found in record? %s",repr(record))
|
|
360
|
+
pass
|
|
337
361
|
|
|
338
362
|
# results
|
|
339
363
|
cur_entry['result_time'] = record[5:11].decode('latin').strip()
|
swimstroke/scb.py
CHANGED
swimstroke/util.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=ex3E85naoabIJZ3WbwLnhBYuFsexc-WNjd_KEJshKsg,3885
|
|
4
|
+
swimstroke/helpers.py,sha256=mlEvjs65_a5o9RjHd5l67gM9q-gxXCoC8oITgNYiSn0,6883
|
|
5
|
+
swimstroke/hy3.py,sha256=n-f3zklK_93srPx3EQ97j9ULeekPgrBL43M2_GW2gac,18668
|
|
6
|
+
swimstroke/scb.py,sha256=UEpcPo4ECufoY-rYZrHI7YCQfyEK4X6cgC91ZoEp2DA,4391
|
|
7
|
+
swimstroke/sd3.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
|
|
8
|
+
swimstroke/util.py,sha256=AOABVaHL6TMgnlZXeIHHEtVbB_wA7DXACeKVI0IG3vA,1345
|
|
9
|
+
swimstroke/yaml.py,sha256=4qPS58tBF5u2VOn59o-Z2q5xzfpBOw_APZ2ybMrrxKw,6855
|
|
10
|
+
swimstroke-0.1.9.dist-info/licenses/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
|
|
11
|
+
swimstroke-0.1.9.dist-info/METADATA,sha256=TA5ynCa8yPqx90xSdiFRLjOtQZtQIuvVhIXLXrP9znQ,127
|
|
12
|
+
swimstroke-0.1.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
13
|
+
swimstroke-0.1.9.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
|
|
14
|
+
swimstroke-0.1.9.dist-info/RECORD,,
|
|
@@ -1,14 +0,0 @@
|
|
|
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=0yCYNSnnr_DBHU3ROTFHiEkb2q-OXO6iRe-dFE0G7iI,6598
|
|
5
|
-
swimstroke/hy3.py,sha256=hP4QNl9IkR_z9GZzziyQHFAMyp6Edu9EzBOf7EiKP9k,17098
|
|
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=4qPS58tBF5u2VOn59o-Z2q5xzfpBOw_APZ2ybMrrxKw,6855
|
|
10
|
-
swimstroke-0.1.8.dist-info/licenses/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
|
|
11
|
-
swimstroke-0.1.8.dist-info/METADATA,sha256=u8U9amO0i-vtojLXiuVir0E7_Cx4_hXlrApTEpoDjTo,127
|
|
12
|
-
swimstroke-0.1.8.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
13
|
-
swimstroke-0.1.8.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
|
|
14
|
-
swimstroke-0.1.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|