swimstroke 0.1.5__py3-none-any.whl → 0.1.7__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/helpers.py +6 -2
- swimstroke/hy3.py +28 -0
- swimstroke-0.1.7.dist-info/METADATA +6 -0
- {swimstroke-0.1.5.dist-info → swimstroke-0.1.7.dist-info}/RECORD +7 -7
- {swimstroke-0.1.5.dist-info → swimstroke-0.1.7.dist-info}/WHEEL +1 -1
- swimstroke-0.1.5.dist-info/METADATA +0 -6
- {swimstroke-0.1.5.dist-info → swimstroke-0.1.7.dist-info/licenses}/LICENSE +0 -0
- {swimstroke-0.1.5.dist-info → swimstroke-0.1.7.dist-info}/top_level.txt +0 -0
swimstroke/helpers.py
CHANGED
|
@@ -52,8 +52,10 @@ def _event_key_from_event(event):
|
|
|
52
52
|
event_prefix="A"
|
|
53
53
|
elif event['type']=='Prelim':
|
|
54
54
|
event_prefix="B"
|
|
55
|
-
elif event['type']==
|
|
55
|
+
elif event['type']=='Semi':
|
|
56
56
|
event_prefix="C"
|
|
57
|
+
elif event['type']=="Final":
|
|
58
|
+
event_prefix="D"
|
|
57
59
|
|
|
58
60
|
# pad some 0s on the event_str to make a lexicographic sort possible
|
|
59
61
|
event_str = event['index']
|
|
@@ -68,8 +70,10 @@ def _event_key_from_entry(entry):
|
|
|
68
70
|
event_prefix="A"
|
|
69
71
|
elif entry['event_type']=='Prelim':
|
|
70
72
|
event_prefix="B"
|
|
71
|
-
elif entry['event_type']=="
|
|
73
|
+
elif entry['event_type']=="Semi":
|
|
72
74
|
event_prefix="C"
|
|
75
|
+
elif entry['event_type']=="Final":
|
|
76
|
+
event_prefix="D"
|
|
73
77
|
|
|
74
78
|
# pad some 0s on the event_str to make a lexicographic sort possible
|
|
75
79
|
event_str = entry['event_index']
|
swimstroke/hy3.py
CHANGED
|
@@ -35,6 +35,7 @@ HY3_EVENT_COURSE_CODES = {
|
|
|
35
35
|
}
|
|
36
36
|
HY3_EVENT_TYPE_CODES = {
|
|
37
37
|
"P":"Prelim",
|
|
38
|
+
"S":"Semi",
|
|
38
39
|
"F":"Final",
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -57,7 +58,9 @@ def load(fo):
|
|
|
57
58
|
cur_entry = None
|
|
58
59
|
cur_team = None
|
|
59
60
|
_swimmer_code_to_ids = {}
|
|
61
|
+
_swimmer_id_generator = 0
|
|
60
62
|
_team_short_names = set()
|
|
63
|
+
already_e2_submitted = False
|
|
61
64
|
while ((record := fo.read(132))):
|
|
62
65
|
line += 1
|
|
63
66
|
try:
|
|
@@ -88,6 +91,11 @@ def load(fo):
|
|
|
88
91
|
swimmer_code = record[4:4+SWIMMER_CODE_LENGTH].decode('latin').lower() # don't strip, padding is part of the key
|
|
89
92
|
swimmer_gendercode = record[2:3].decode('latin')
|
|
90
93
|
swimmer_id = record[69:81].decode('latin').strip()
|
|
94
|
+
# swimmer ids are not mandatory! So we need to account for if they
|
|
95
|
+
# 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
|
|
91
99
|
birthday_str = record[88:96].decode('latin')
|
|
92
100
|
swimmer_age = record[97:99].decode('latin').strip()
|
|
93
101
|
if swimmer_age == "":
|
|
@@ -114,6 +122,8 @@ def load(fo):
|
|
|
114
122
|
_swimmer_code_to_ids[swimmer_code] = swimmer_id
|
|
115
123
|
|
|
116
124
|
elif rtype == b'E1': # individual entry record
|
|
125
|
+
already_e2_submitted = False
|
|
126
|
+
|
|
117
127
|
strokecode = record[21:22].decode('latin')
|
|
118
128
|
#print("stroke",HY3_STROKE_CODES[strokecode])
|
|
119
129
|
distance = int(record[15:21].decode('latin'))
|
|
@@ -151,6 +161,7 @@ def load(fo):
|
|
|
151
161
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
152
162
|
"event_course":None,
|
|
153
163
|
"event_coursecode":None,
|
|
164
|
+
"event_typecode":None,
|
|
154
165
|
"event_type":"Final", # is this the correct default?
|
|
155
166
|
"event_date":None,
|
|
156
167
|
"heat":None,
|
|
@@ -165,6 +176,8 @@ def load(fo):
|
|
|
165
176
|
"seed_time_ms":seed_time_ms,
|
|
166
177
|
"seed_time_str":swimtimefmt(seed_time_ms),
|
|
167
178
|
"swimmer_ids":[cur_swimmer['swimmer_id']],
|
|
179
|
+
"result_time_ms":None,
|
|
180
|
+
"result_time_str":None,
|
|
168
181
|
"relay":False,
|
|
169
182
|
"dq":False,
|
|
170
183
|
"points":None,
|
|
@@ -182,8 +195,17 @@ def load(fo):
|
|
|
182
195
|
entries.append(cur_entry)
|
|
183
196
|
|
|
184
197
|
elif rtype == b'E2': # continuation of an entry
|
|
198
|
+
# there can be multiple E2 lines per E1 which are multiple entries in each event (usually for prelim,semis,finals)
|
|
199
|
+
# we should probably make the seed time for semis be the prelim result time. and the result time for finals be the
|
|
200
|
+
# semis result time. TODO!
|
|
201
|
+
|
|
202
|
+
if already_e2_submitted: # we need to duplicate the entry and add it to the list
|
|
203
|
+
cur_entry = cur_entry.copy()
|
|
204
|
+
entries.append(cur_entry)
|
|
205
|
+
already_e2_submitted = True
|
|
185
206
|
|
|
186
207
|
event_type = record[2:3].decode('latin').strip()
|
|
208
|
+
cur_entry['event_typecode'] = event_type
|
|
187
209
|
if event_type in HY3_EVENT_TYPE_CODES:
|
|
188
210
|
cur_entry['event_type'] = HY3_EVENT_TYPE_CODES[event_type]
|
|
189
211
|
else:
|
|
@@ -260,6 +282,8 @@ def load(fo):
|
|
|
260
282
|
"event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
|
|
261
283
|
"event_course":None,
|
|
262
284
|
"event_coursecode":None,
|
|
285
|
+
"event_typecode":None,
|
|
286
|
+
"event_type":"Final", # is this the correct default?
|
|
263
287
|
"stroke":HY3_STROKE_CODES[strokecode],
|
|
264
288
|
"strokeshort":HY3_STROKE_CODES_SHORT[strokecode],
|
|
265
289
|
"distance":distance,
|
|
@@ -268,6 +292,8 @@ def load(fo):
|
|
|
268
292
|
"seed_coursecode":seed_coursecode,
|
|
269
293
|
"seed_time_ms":seed_time_ms,
|
|
270
294
|
"seed_time_str":swimtimefmt(seed_time_ms),
|
|
295
|
+
"result_time_ms":None,
|
|
296
|
+
"result_time_str":None,
|
|
271
297
|
"relay":True,
|
|
272
298
|
"teamname":relayname,
|
|
273
299
|
"swimmer_codes":[],
|
|
@@ -287,7 +313,9 @@ def load(fo):
|
|
|
287
313
|
entries.append(cur_entry)
|
|
288
314
|
|
|
289
315
|
elif rtype == b'F2':
|
|
316
|
+
# TODO: update this in case relays have prelims, semis, final (as per E2 records above)
|
|
290
317
|
event_type = record[2:3].decode('latin').strip()
|
|
318
|
+
cur_entry['event_typecode'] = event_type
|
|
291
319
|
if event_type in HY3_EVENT_TYPE_CODES:
|
|
292
320
|
cur_entry['event_type'] = HY3_EVENT_TYPE_CODES[event_type]
|
|
293
321
|
else:
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
swimstroke/__init__.py,sha256=HyRSzghNy1qExTdycvl7MsVvwQ7vi3FtqUQbobhepRo,78
|
|
2
2
|
swimstroke/__main__.py,sha256=d0ln2BGuqyjDIB2OOmZEA4lOjPAjHARuzuo1_WomNZU,1212
|
|
3
3
|
swimstroke/ev3.py,sha256=Ma1TsRQAop7wQNoeRBdKBZuQyuRpq08OYzdS7dr_llI,3579
|
|
4
|
-
swimstroke/helpers.py,sha256=
|
|
5
|
-
swimstroke/hy3.py,sha256=
|
|
4
|
+
swimstroke/helpers.py,sha256=0yCYNSnnr_DBHU3ROTFHiEkb2q-OXO6iRe-dFE0G7iI,6598
|
|
5
|
+
swimstroke/hy3.py,sha256=DZ0zsHEnm29SdggLs9jY6GEIDMipiqt6SEZFLcI3uHs,17169
|
|
6
6
|
swimstroke/scb.py,sha256=ow-T4Ou6jC7PQdphARncM7T0hIzj20prD-C9JVBU6Y8,4307
|
|
7
7
|
swimstroke/sd3.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
|
|
8
8
|
swimstroke/util.py,sha256=5Xfvfngv9T47U_7gddiPw80pHtTAlhomW40JUGDS2iI,1244
|
|
9
9
|
swimstroke/yaml.py,sha256=4qPS58tBF5u2VOn59o-Z2q5xzfpBOw_APZ2ybMrrxKw,6855
|
|
10
|
-
swimstroke-0.1.
|
|
11
|
-
swimstroke-0.1.
|
|
12
|
-
swimstroke-0.1.
|
|
13
|
-
swimstroke-0.1.
|
|
14
|
-
swimstroke-0.1.
|
|
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
|