swimstroke 0.0.1__py3-none-any.whl → 0.0.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/helpers.py CHANGED
@@ -70,56 +70,80 @@ def _event_key_from_entry(entry):
70
70
  return event_prefix+"-"+event_str
71
71
 
72
72
  def get_events(meetinfo):
73
- teams_by_short_name = {}
74
- events_by_key = {}
75
- for team in meetinfo['teams']:
76
- swimmers_by_code = {}
77
- teams_by_short_name[team['short_name']] = team
78
- for swimmer in team['swimmers']:
79
- assert swimmer['swimmer_code'] not in swimmers_by_code
80
- swimmers_by_code[swimmer['swimmer_code']] = swimmer
81
- for entry in team['entries']:
82
- event_key = _event_key_from_entry(entry)
83
- if event_key not in events_by_key:
84
- events_by_key[event_key] = {
85
- "event":entry['event_str'],
86
- "event_number":int(entry['event']),
87
- "date":entry['event_date'],
88
- "gender":entry['event_gender'],
89
- "gendercode":entry['event_gendercode'],
90
- "course":entry['event_course'],
91
- "coursecode":entry['event_coursecode'],
92
- "stroke":entry['stroke'],
93
- "strokeshort":entry['strokeshort'],
94
- "distance":entry['distance'],
95
- "relay":entry['relay'],
96
- "type":entry['event_type'],
97
- "entries":[],
98
- "num_heats":None
99
- }
100
- event = events_by_key[event_key]
101
- name = "%s %d %s"%(event['gender'],event['distance'],event['strokeshort'])
102
- if entry['relay']:
103
- name += " Relay"
104
- event['name'] = name
73
+ if 'teams' in meetinfo:
74
+ teams_by_short_name = {}
75
+ events_by_key = {}
76
+ for team in meetinfo['teams']:
77
+ swimmers_by_code = {}
78
+ teams_by_short_name[team['short_name']] = team
79
+ for swimmer in team['swimmers']:
80
+ assert swimmer['swimmer_code'] not in swimmers_by_code
81
+ swimmers_by_code[swimmer['swimmer_code']] = swimmer
82
+ for entry in team['entries']:
83
+ event_key = _event_key_from_entry(entry)
84
+ if event_key not in events_by_key:
85
+ events_by_key[event_key] = {
86
+ "event":entry['event_str'],
87
+ "event_number":int(entry['event']),
88
+ "date":entry['event_date'],
89
+ "gender":entry['event_gender'],
90
+ "gendercode":entry['event_gendercode'],
91
+ "course":entry['event_course'],
92
+ "coursecode":entry['event_coursecode'],
93
+ "stroke":entry['stroke'],
94
+ "strokeshort":entry['strokeshort'],
95
+ "distance":entry['distance'],
96
+ "relay":entry['relay'],
97
+ "type":entry['event_type'],
98
+ "entries":[],
99
+ "num_heats":None
100
+ }
101
+ event = events_by_key[event_key]
102
+ name = "%s %d %s"%(event['gender'],event['distance'],event['strokeshort'])
103
+ if entry['relay']:
104
+ name += " Relay"
105
+ event['name'] = name
106
+
107
+ entry = entry.copy()
108
+ entry['swimmers'] = [swimmers_by_code[s] for s in entry['swimmer_codes']]
105
109
 
106
- entry = entry.copy()
107
- entry['swimmers'] = [swimmers_by_code[s] for s in entry['swimmer_codes']]
110
+ events_by_key[event_key]['entries'].append(entry)
111
+ if entry['heat'] is not None:
112
+ if events_by_key[event_key]['num_heats'] is None or \
113
+ events_by_key[event_key]['num_heats']<entry['heat_number']:
114
+ events_by_key[event_key]['num_heats'] = entry['heat_number']
108
115
 
109
- events_by_key[event_key]['entries'].append(entry)
110
- if entry['heat'] is not None:
111
- if events_by_key[event_key]['num_heats'] is None or \
112
- events_by_key[event_key]['num_heats']<entry['heat_number']:
113
- events_by_key[event_key]['num_heats'] = entry['heat_number']
116
+ return [events_by_key[event_key] for event_key in sorted([event_key for event_key in events_by_key.keys()])]
117
+ elif 'events' in meetinfo:
118
+ return meetinfo['events']
119
+ else:
120
+ raise ValueError("meetinfo doesn't have entries or events keys")
114
121
 
115
- events = [events_by_key[event_key] for event_key in sorted([event_key for event_key in events_by_key.keys()])]
116
- return events
122
+ def populate_heats(event):
123
+ event['heats'] = []
124
+ heats_by_key = {}
125
+ for entry in event['entries']:
126
+ if entry['heat'] is not None:
127
+ if entry['heat_number'] not in heats_by_key:
128
+ heats_by_key[entry['heat_number']] = {
129
+ "heat":entry['heat'],
130
+ "heat_number":entry['heat_number'],
131
+ "entries":[]
132
+ }
133
+ heats_by_key[entry['heat_number']]['entries'].append(entry)
134
+ for heat_num in sorted([hnum for hnum in heats_by_key.keys()]):
135
+ heats_by_key[heat_num]['entries'].sort(key=lambda e:e['lane'])
136
+ event['heats'].append(heats_by_key[heat_num])
137
+ return event
117
138
 
118
139
  def get_lanes(meetinfo):
119
- lanes = []
120
- for team in meetinfo['teams']:
121
- for entry in team['entries']:
122
- if entry['lane'] is not None and entry['lane'] not in lanes:
123
- lanes.append(entry['lane'])
124
- lanes.sort()
125
- return lanes
140
+ if 'teams' in meetinfo:
141
+ lanes = []
142
+ for team in meetinfo['teams']:
143
+ for entry in team['entries']:
144
+ if entry['lane'] is not None and entry['lane'] not in lanes:
145
+ lanes.append(entry['lane'])
146
+ lanes.sort()
147
+ return lanes
148
+ else:
149
+ raise ValueError("meetinfo doesn't have entries")
swimstroke/hy3.py CHANGED
@@ -109,11 +109,11 @@ def load(fo):
109
109
  #print("couldn't convert event_num, leaving as string",event_num_str)
110
110
  event_num = None
111
111
 
112
- event_coursecode = record[50:51].decode('latin').strip()
113
- if event_coursecode in HY3_EVENT_COURSE_CODES:
114
- event_course = HY3_EVENT_COURSE_CODES[event_coursecode]
112
+ seed_coursecode = record[50:51].decode('latin').strip()
113
+ if seed_coursecode in HY3_EVENT_COURSE_CODES:
114
+ seed_course = HY3_EVENT_COURSE_CODES[seed_coursecode]
115
115
  else:
116
- event_course = None
116
+ seed_course = None
117
117
 
118
118
  #print("event #",event_num)
119
119
  # I'm not 100% sure this is the seed time field.
@@ -131,8 +131,8 @@ def load(fo):
131
131
  "event_str":event_num_str,
132
132
  "event_gendercode":event_gendercode,
133
133
  "event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
134
- "event_course":event_course,
135
- "event_coursecode":event_coursecode,
134
+ "event_course":None,
135
+ "event_coursecode":None,
136
136
  "heat":None,
137
137
  "heat_number":None,
138
138
  "lane":None,
@@ -140,6 +140,8 @@ def load(fo):
140
140
  "strokeshort":HY3_STROKE_CODES_SHORT[strokecode],
141
141
  "distance":distance,
142
142
  "seed_time":seed_time,
143
+ "seed_course":seed_course,
144
+ "seed_coursecode":seed_coursecode,
143
145
  "seed_time_ms":seed_time_ms,
144
146
  "seed_time_str":swimtimefmt(seed_time_ms),
145
147
  "swimmer_codes":[cur_swimmer['swimmer_code']],
@@ -162,6 +164,12 @@ def load(fo):
162
164
  cur_entry['event_datestr'] = record[87:95].decode('latin').strip()
163
165
  cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(cur_entry['event_datestr'])
164
166
 
167
+ cur_entry['event_coursecode'] = record[11:12].decode('latin').strip()
168
+ if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
169
+ cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
170
+ else:
171
+ print("no course?",record)
172
+
165
173
  # results
166
174
  cur_entry['result_time'] = record[5:11].decode('latin').strip()
167
175
  if cur_entry['result_time'] == "" and cur_entry['result_time']!="0.00":
@@ -198,11 +206,11 @@ def load(fo):
198
206
  #print("couldn't convert event_num, leaving as string",event_num_str)
199
207
  event_num = None
200
208
 
201
- event_coursecode = record[50:51].decode('latin').strip()
202
- if event_coursecode in HY3_EVENT_COURSE_CODES:
203
- event_course = HY3_EVENT_COURSE_CODES[event_coursecode]
209
+ seed_coursecode = record[50:51].decode('latin').strip()
210
+ if seed_coursecode in HY3_EVENT_COURSE_CODES:
211
+ seed_course = HY3_EVENT_COURSE_CODES[seed_coursecode]
204
212
  else:
205
- event_course = None
213
+ seed_course = None
206
214
 
207
215
  # I'm not 100% sure this is the seed time field.
208
216
  # there are other time fields and I don't have a
@@ -222,12 +230,14 @@ def load(fo):
222
230
  "lane":None,
223
231
  "event_gendercode":event_gendercode,
224
232
  "event_gender":HY3_EVENT_GENDER_CODES[event_gendercode] if event_gendercode in HY3_EVENT_GENDER_CODES else "Unknown",
225
- "event_course":event_course,
226
- "event_coursecode":event_coursecode,
233
+ "event_course":None,
234
+ "event_coursecode":None,
227
235
  "stroke":HY3_STROKE_CODES[strokecode],
228
236
  "strokeshort":HY3_STROKE_CODES_SHORT[strokecode],
229
237
  "distance":distance,
230
238
  "seed_time":seed_time,
239
+ "seed_course":seed_course,
240
+ "seed_coursecode":seed_coursecode,
231
241
  "seed_time_ms":seed_time_ms,
232
242
  "seed_time_str":swimtimefmt(seed_time_ms),
233
243
  "relay":True,
@@ -253,6 +263,12 @@ def load(fo):
253
263
  cur_entry['event_datestr'] = record[102:110].decode('latin').strip()
254
264
  cur_entry['event_date'] = _mmddyyyy_date_to_iso_date(cur_entry['event_datestr'])
255
265
 
266
+ cur_entry['event_coursecode'] = record[11:12].decode('latin').strip()
267
+ if cur_entry['event_coursecode'] in HY3_EVENT_COURSE_CODES:
268
+ cur_entry['event_course'] = HY3_EVENT_COURSE_CODES[cur_entry['event_coursecode']]
269
+ else:
270
+ print("no course?",record)
271
+
256
272
  # results
257
273
  cur_entry['result_time'] = record[5:11].decode('latin').strip()
258
274
  if cur_entry['result_time'] == "" and cur_entry['result_time']!="0.00":
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: swimstroke
3
- Version: 0.0.1
3
+ Version: 0.0.3
4
4
  License-File: LICENSE
5
5
 
@@ -1,14 +1,14 @@
1
1
  swimstroke/__init__.py,sha256=HTxCVaw1TLgpHMH8guB3hHYQ80cX6_fSEoPT_hz2Y8w,23
2
2
  swimstroke/__main__.py,sha256=XtPUjZM3ZTd_fEMmgZBqFlkp65eqXXcVWTXmQR9PF_A,657
3
3
  swimstroke/ev3.py,sha256=P5IkzYCqAH3E5ZzhJMyFztxo0PE4_-wmwIyOsDkagws,3793
4
- swimstroke/helpers.py,sha256=fyvNQ-62_2TgvK-CAf0M7Qcdg_XeIQb1w7aikP2qY_o,4815
5
- swimstroke/hy3.py,sha256=ajbPWd_uEANQ6sclf5ZOwOJ8XeWbAZTrvRO2BofhnIA,12231
4
+ swimstroke/helpers.py,sha256=HgdD5bPzPZXHRWQANyha_n0oloZFPpjZ4pccd_4ICDE,5945
5
+ swimstroke/hy3.py,sha256=Exs_cjsISZqOGUBaowhOQrspL_lcGvcWbESQ6CI8ZZc,13053
6
6
  swimstroke/scb.py,sha256=cC-rhzRvKpq60ux7MHm0ylj16qc21ZqhUBLQqxdJMQI,86
7
7
  swimstroke/sd3.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
8
8
  swimstroke/util.py,sha256=s7cBEfHsdbYuID3bH2bAnw72zYHC2A4LroSf8iTH74o,586
9
9
  swimstroke/yaml.py,sha256=JMYeTOk66YJInRReB3KMFyB1JKnX69sCHdC2_Ey2ypg,47
10
- swimstroke-0.0.1.dist-info/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
11
- swimstroke-0.0.1.dist-info/METADATA,sha256=oHe4_t5QSZM8sGOyFW_mHwl9Crakiu1twQS_NN33A1Y,77
12
- swimstroke-0.0.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
13
- swimstroke-0.0.1.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
14
- swimstroke-0.0.1.dist-info/RECORD,,
10
+ swimstroke-0.0.3.dist-info/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
11
+ swimstroke-0.0.3.dist-info/METADATA,sha256=WgM6E9-UJM8e95NVtSxzEAA6LjkIwmA6-lYvbBXkHBk,77
12
+ swimstroke-0.0.3.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
13
+ swimstroke-0.0.3.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
14
+ swimstroke-0.0.3.dist-info/RECORD,,