swimstroke 0.1.7__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 +41 -19
- swimstroke/scb.py +2 -0
- swimstroke/util.py +6 -0
- {swimstroke-0.1.7.dist-info → swimstroke-0.1.9.dist-info}/METADATA +1 -1
- swimstroke-0.1.9.dist-info/RECORD +14 -0
- swimstroke-0.1.7.dist-info/RECORD +0 -14
- {swimstroke-0.1.7.dist-info → swimstroke-0.1.9.dist-info}/WHEEL +0 -0
- {swimstroke-0.1.7.dist-info → swimstroke-0.1.9.dist-info}/licenses/LICENSE +0 -0
- {swimstroke-0.1.7.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
|
@@ -58,9 +58,9 @@ def load(fo):
|
|
|
58
58
|
cur_entry = None
|
|
59
59
|
cur_team = None
|
|
60
60
|
_swimmer_code_to_ids = {}
|
|
61
|
-
_swimmer_id_generator = 0
|
|
62
61
|
_team_short_names = set()
|
|
63
62
|
already_e2_submitted = False
|
|
63
|
+
default_course_code = None
|
|
64
64
|
while ((record := fo.read(132))):
|
|
65
65
|
line += 1
|
|
66
66
|
try:
|
|
@@ -72,10 +72,15 @@ def load(fo):
|
|
|
72
72
|
meetinfo['startdate'] = _mmddyyyy_date_to_iso_date(startdate_str)
|
|
73
73
|
enddate_str = record[100:108].decode('latin').strip()
|
|
74
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
|
|
75
79
|
elif rtype == b"C1":
|
|
76
80
|
cur_team = {
|
|
77
81
|
"short_name":record[2:7].decode('latin').strip(),
|
|
78
82
|
"name":record[7:37].decode('latin').strip(),
|
|
83
|
+
"region":record[53:55].decode('latin').strip(), # the State in the USA
|
|
79
84
|
}
|
|
80
85
|
# don't add duplicates (some files have them...)
|
|
81
86
|
if cur_team['short_name'] not in _team_short_names:
|
|
@@ -93,10 +98,9 @@ def load(fo):
|
|
|
93
98
|
swimmer_id = record[69:81].decode('latin').strip()
|
|
94
99
|
# swimmer ids are not mandatory! So we need to account for if they
|
|
95
100
|
# are not used in a file
|
|
96
|
-
if len(swimmer_id)==0:
|
|
97
|
-
swimmer_id = f"swimstroke-id-{_swimmer_id_generator}"
|
|
98
|
-
_swimmer_id_generator += 1
|
|
99
101
|
birthday_str = record[88:96].decode('latin')
|
|
102
|
+
if len(swimmer_id)==0:
|
|
103
|
+
swimmer_id = f"swimstroke-id-{swimmer_code}-{birthday_str}"
|
|
100
104
|
swimmer_age = record[97:99].decode('latin').strip()
|
|
101
105
|
if swimmer_age == "":
|
|
102
106
|
swimmer_age = None
|
|
@@ -155,15 +159,20 @@ def load(fo):
|
|
|
155
159
|
seed_time = None
|
|
156
160
|
seed_time_ms = None
|
|
157
161
|
|
|
162
|
+
event_age_from = int(record[22:25].decode('latin').strip())
|
|
163
|
+
event_age_to = int(record[25:28].decode('latin').strip())
|
|
164
|
+
|
|
158
165
|
cur_entry = {
|
|
159
166
|
"event_index":event_num_str,
|
|
160
167
|
"event_gendercode":event_gendercode,
|
|
161
168
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
162
|
-
"event_course":None,
|
|
163
|
-
"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,
|
|
164
171
|
"event_typecode":None,
|
|
165
172
|
"event_type":"Final", # is this the correct default?
|
|
166
173
|
"event_date":None,
|
|
174
|
+
"event_age_from":event_age_from,
|
|
175
|
+
"event_age_to":event_age_to,
|
|
167
176
|
"heat":None,
|
|
168
177
|
"heat_number":None,
|
|
169
178
|
"lane":None,
|
|
@@ -218,11 +227,15 @@ def load(fo):
|
|
|
218
227
|
event_datestr = record[87:95].decode('latin').strip()
|
|
219
228
|
cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(event_datestr)
|
|
220
229
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
|
226
239
|
|
|
227
240
|
# results
|
|
228
241
|
cur_entry['result_time'] = record[4:11].decode('latin').strip()
|
|
@@ -273,6 +286,9 @@ def load(fo):
|
|
|
273
286
|
seed_time_ms = None
|
|
274
287
|
seed_time = None
|
|
275
288
|
|
|
289
|
+
event_age_from = int(record[22:25].decode('latin').strip())
|
|
290
|
+
event_age_to = int(record[25:28].decode('latin').strip())
|
|
291
|
+
|
|
276
292
|
cur_entry = {
|
|
277
293
|
"event_index":event_num_str,
|
|
278
294
|
"heat":None,
|
|
@@ -280,10 +296,12 @@ def load(fo):
|
|
|
280
296
|
"lane":None,
|
|
281
297
|
"event_gendercode":event_gendercode,
|
|
282
298
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
283
|
-
"event_course":None,
|
|
284
|
-
"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,
|
|
285
301
|
"event_typecode":None,
|
|
286
302
|
"event_type":"Final", # is this the correct default?
|
|
303
|
+
"event_age_from":event_age_from,
|
|
304
|
+
"event_age_to":event_age_to,
|
|
287
305
|
"stroke":HY3_STROKE_CODES[strokecode],
|
|
288
306
|
"strokeshort":HY3_STROKE_CODES_SHORT[strokecode],
|
|
289
307
|
"distance":distance,
|
|
@@ -330,12 +348,16 @@ def load(fo):
|
|
|
330
348
|
|
|
331
349
|
event_datestr = record[102:110].decode('latin').strip()
|
|
332
350
|
cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(event_datestr)
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
|
339
361
|
|
|
340
362
|
# results
|
|
341
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=DZ0zsHEnm29SdggLs9jY6GEIDMipiqt6SEZFLcI3uHs,17169
|
|
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.7.dist-info/licenses/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
|
|
11
|
-
swimstroke-0.1.7.dist-info/METADATA,sha256=Y5_ktlCffb8IT8rbqEGihsIE_a1Fud-I8qood6yrYO4,127
|
|
12
|
-
swimstroke-0.1.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
13
|
-
swimstroke-0.1.7.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
|
|
14
|
-
swimstroke-0.1.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|