swimstroke 0.0.2__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")
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: swimstroke
3
- Version: 0.0.2
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
4
+ swimstroke/helpers.py,sha256=HgdD5bPzPZXHRWQANyha_n0oloZFPpjZ4pccd_4ICDE,5945
5
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.2.dist-info/LICENSE,sha256=ua_EyrQ3shMEJAhfgGjSeK_mFf6AIT-QiFG2lQfsntY,1103
11
- swimstroke-0.0.2.dist-info/METADATA,sha256=wiGs2ob_q022sNICybsHcSnbKyQUDb9B_FyUY6nkva4,77
12
- swimstroke-0.0.2.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
13
- swimstroke-0.0.2.dist-info/top_level.txt,sha256=C15CTf7t6T4k83ycljKbwYVziBgz5vqOBEYdK8Y6FfY,11
14
- swimstroke-0.0.2.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,,