scraping-rtn 0.0.6.0__py3-none-any.whl → 0.0.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.

Potentially problematic release.


This version of scraping-rtn might be problematic. Click here for more details.

@@ -1,4 +1,4 @@
1
- from .src import EVENT_MAP, EVENTS, session_setup, get_data_from_api, fix_opponents, normalize_date, merge_dicts, \
1
+ from .src import EVENT_MAP, EVENTS, get_data_from_api, fix_opponents, normalize_date, merge_dicts, \
2
2
  get_extra_cols, SCHEDULE_COLS, RESULTS_COLS, IND_RESULTS_COLS, ROSTER_COLS
3
3
  import pandas as pd
4
4
  import numpy as np
@@ -15,14 +15,11 @@ class RtnSingleTeamYear(object):
15
15
  else:
16
16
  self.team_id = team_id
17
17
 
18
- def connect_session(self):
19
- self.session = session_setup()
18
+ def get_team_mapping(self, force_update=False):
19
+ if force_update:
20
+ get_data_from_api.clear_cache()
20
21
 
21
- def get_team_mapping(self):
22
- if not hasattr(self, 'session'):
23
- self.connect_session()
24
-
25
- all_teams_data = get_data_from_api(session=self.session, endpoint='gymnasts2', suffix=str(self.year) + '/1').json()
22
+ all_teams_data = get_data_from_api(endpoint='gymnasts2', suffix=str(self.year) + '/1').json()
26
23
  return {team['team_name']: team['id'] for team in all_teams_data['teams']}
27
24
 
28
25
  def get_team_id(self):
@@ -38,22 +35,22 @@ class RtnSingleTeamYear(object):
38
35
  # else:
39
36
  # raise ValueError(f'{self.team_name} does not exist in data for {self.year}')
40
37
 
41
- def _get_raw_roster(self):
42
- if not hasattr(self, 'session'):
43
- self.connect_session()
44
-
38
+ def _get_raw_roster(self, force_update=False):
45
39
  rename_map = {'id': 'Gymnast ID', 'hometown': 'Hometown', 'school_year': 'School Year', 'events': 'Events'}
46
40
  school_year_map = {'1': 'FR', '2': 'SO', '3': 'JR', '4': 'SR'}
47
41
 
48
- roster_data = get_data_from_api(session=self.session, endpoint='rostermain', suffix=str(self.year)+'/'+str(self.team_id)+'/1').json()
42
+ if force_update:
43
+ get_data_from_api.clear_cache()
44
+
45
+ roster_data = get_data_from_api(endpoint='rostermain', suffix=str(self.year)+'/'+str(self.team_id)+'/1').json()
49
46
 
50
47
  self._raw_roster = [{**{rename_map.get(k, k): v if k != 'school_year' else school_year_map.get(v, '') for k, v in data.items()},
51
48
  **{'Name': data['fname'] + ' ' + data['lname'], 'Team': self.team_name}}
52
49
  for data in roster_data]
53
50
 
54
- def get_roster(self, include_hometowns=False, include_class=False, include_events=False):
51
+ def get_roster(self, include_hometowns=False, include_class=False, include_events=False, force_update=False):
55
52
  if not hasattr(self, 'raw_roster'):
56
- self._get_raw_roster()
53
+ self._get_raw_roster(force_update=force_update)
57
54
 
58
55
  extra_cols = get_extra_cols(include_hometowns=include_hometowns, include_class=include_class, include_events=include_events)
59
56
 
@@ -65,11 +62,11 @@ class RtnSingleTeamYear(object):
65
62
 
66
63
  return self.roster
67
64
 
68
- def _get_raw_season_results(self):
69
- if not hasattr(self, 'session'):
70
- self.connect_session()
65
+ def _get_raw_season_results(self, force_update=False):
66
+ if force_update:
67
+ get_data_from_api.clear_cache()
71
68
 
72
- meets = get_data_from_api(session=self.session, endpoint='dashboard', suffix=str(self.year)+'/'+str(self.team_id)).json()
69
+ meets = get_data_from_api(endpoint='dashboard', suffix=str(self.year)+'/'+str(self.team_id)).json()
73
70
  name_map = {'team_id': 'Team ID', 'team_name': 'Team', 'meet_id': 'Team Meet ID',
74
71
  'meet_date': 'Meet Date', 'team_score': 'Score', 'home': 'Home/Away',
75
72
  'opponent': 'Opponents', 'meet_desc': 'Meet Name', 'linked_id': 'Meet ID'}
@@ -79,9 +76,9 @@ class RtnSingleTeamYear(object):
79
76
  for k, v in data.items() if k != 'jas'} for data in meets['meets'] if data['team_name'] == self.team_name]
80
77
  self._raw_schedule = [{k: v for k, v in data.items() if k not in ('Score', 'VT', 'UB', 'BB', 'FX')} for data in self._raw_season_results]
81
78
 
82
- def get_schedule(self):
79
+ def get_schedule(self, force_update=False):
83
80
  if not hasattr(self, '_raw_schedule'):
84
- self._get_raw_season_results()
81
+ self._get_raw_season_results(force_update=force_update)
85
82
 
86
83
  if len(self._raw_schedule) > 0:
87
84
  return pd.DataFrame(self._raw_schedule)
@@ -103,14 +100,14 @@ class RtnSingleTeamYear(object):
103
100
  * Uses team meet id to join back to meet info, such as opponent, etc.
104
101
  """
105
102
  if not hasattr(self, '_raw_season_results'):
106
- self._get_raw_season_results()
103
+ self._get_raw_season_results(force_update=force_update)
107
104
 
108
105
  if len(self._raw_season_results) > 0:
109
106
  if (len({'VT', 'UB', 'BB', 'FX'}.intersection(self._raw_season_results[0].keys())) != 4 or force_update):
110
107
  if method == 'team_consistency':
111
- self._team_event_scores_team_consistency()
108
+ self._team_event_scores_team_consistency(force_update=force_update)
112
109
  elif method == 'by_meet':
113
- self._team_event_scores_by_meet()
110
+ self._team_event_scores_by_meet(force_update=force_update)
114
111
  else:
115
112
  raise ValueError('Method must be "team_consistency" or "by_meet"')
116
113
 
@@ -121,14 +118,14 @@ class RtnSingleTeamYear(object):
121
118
 
122
119
  return self.season_results
123
120
 
124
- def _team_event_scores_by_meet(self):
125
- if not hasattr(self, 'session'):
126
- self.connect_session()
127
-
121
+ def _team_event_scores_by_meet(self, force_update=False):
128
122
  team_scores_all = []
129
123
  for meet_id in [data['Team Meet ID'] for data in self._raw_season_results if data['Meet Date'] <= datetime.now()]:
130
124
  try:
131
- meet_res = get_data_from_api(session=self.session, endpoint='meetresults', suffix=str(meet_id)).json()
125
+ if force_update:
126
+ get_data_from_api.clear_cache()
127
+
128
+ meet_res = get_data_from_api(endpoint='meetresults', suffix=str(meet_id)).json()
132
129
  # This API call returns scores from all teams at this meet, not just this team. Need to pick out correct score
133
130
  team_scores = [score for score in meet_res['teams'] if score['tname'] == self.team_name and score['mid'] == str(meet_id)]
134
131
  assert len(team_scores) == 1, 'Multiple team scores??'
@@ -143,11 +140,11 @@ class RtnSingleTeamYear(object):
143
140
  for i in range(len(self._raw_season_results)):
144
141
  self._raw_season_results[i].update({'VT': np.nan, 'UB': np.nan, 'BB': np.nan, 'FX': np.nan})
145
142
 
146
- def _team_event_scores_team_consistency(self):
147
- if not hasattr(self, 'session'):
148
- self.connect_session()
143
+ def _team_event_scores_team_consistency(self, force_update=False):
144
+ if force_update:
145
+ get_data_from_api.clear_cache()
149
146
 
150
- res = get_data_from_api(session=self.session, endpoint='teamConsistency', suffix=f'{self.year}/{self.team_id}').json()
147
+ res = get_data_from_api(endpoint='teamConsistency', suffix=f'{self.year}/{self.team_id}').json()
151
148
  if len(res['labels']) == 0:
152
149
  print(f'No team consistency data found for {self.team_name} in {self.year}')
153
150
  for i in range(len(self._raw_season_results)):
@@ -182,22 +179,22 @@ class RtnSingleTeamYear(object):
182
179
  if not hasattr(self, '_raw_roster'):
183
180
  self.get_roster()
184
181
 
185
- self._individual_scores_individual_consistency()
182
+ self._individual_scores_individual_consistency(force_update=force_update)
186
183
  elif method == 'by_meet':
187
- self._individual_scores_by_meet()
184
+ self._individual_scores_by_meet(force_update=force_update)
188
185
  else:
189
186
  raise ValueError('Method must be "individual_consistency" or "by_meet"')
190
187
 
191
188
  return self.individual_results
192
189
 
193
- def _individual_scores_by_meet(self):
194
- if not hasattr(self, 'session'):
195
- self.connect_session()
196
-
190
+ def _individual_scores_by_meet(self, force_update=False):
197
191
  individual_scores_all = []
198
192
  for meet_id in [meet['Team Meet ID'] for meet in self._raw_schedule if meet['Meet Date'] <= datetime.now()]:
199
193
  try:
200
- meet_res = get_data_from_api(session=self.session, endpoint='meetresults', suffix=str(meet_id)).json()
194
+ if force_update:
195
+ get_data_from_api.clear_cache()
196
+
197
+ meet_res = get_data_from_api(endpoint='meetresults', suffix=str(meet_id)).json()
201
198
  if len(meet_res) == 0 or len(meet_res['scores']) == 0 or len(meet_res['scores'][0]) == 0:
202
199
  print(f'No data found for meet {meet_id}')
203
200
  continue
@@ -232,14 +229,14 @@ class RtnSingleTeamYear(object):
232
229
  'Team ID', 'Team', 'Team Meet ID', 'Home/Away', 'Opponents',
233
230
  'Meet Name', 'Meet ID'])
234
231
 
235
- def _individual_scores_individual_consistency(self):
236
- if not hasattr(self, 'session'):
237
- self.connect_session()
238
-
232
+ def _individual_scores_individual_consistency(self, force_update=False):
239
233
  ind_consistency_all = []
240
234
  for gymnast in self._raw_roster:
241
235
  try:
242
- res = get_data_from_api(session=self.session, endpoint='indConsistency', suffix=f"{self.year}/{gymnast['Gymnast ID']}").json()
236
+ if force_update:
237
+ get_data_from_api.clear_cache()
238
+
239
+ res = get_data_from_api(endpoint='indConsistency', suffix=f"{self.year}/{gymnast['Gymnast ID']}").json()
243
240
  ind_consistency = [{'Meet Date': normalize_date(res['labels'][i][:7] + str(self.year), dt_format='%b-%d-%Y'),
244
241
  'VT': round(float(res['vts'][i]), 4) if res['vts'][i] is not None else np.nan,
245
242
  'UB': round(float(res['ubs'][i]), 4) if res['ubs'][i] is not None else np.nan,
@@ -260,27 +257,26 @@ class RtnSingleTeamYear(object):
260
257
  else:
261
258
  self.individual_results = pd.DataFrame(columns=SCHEDULE_COLS + IND_RESULTS_COLS)
262
259
 
263
- def get_individual_nqs(self):
260
+ def get_individual_nqs(self, force_update=False):
264
261
  if not hasattr(self, '_raw_roster'):
265
- self._get_raw_roster()
262
+ self._get_raw_roster(force_update=force_update)
266
263
 
267
264
  if not hasattr(self, '_raw_individual_nqs'):
268
- self._get_raw_individual_nqs()
265
+ self._get_raw_individual_nqs(force_update=force_update)
269
266
 
270
267
  if len(self._raw_individual_nqs) > 0:
271
268
  return pd.DataFrame(self._raw_individual_nqs)
272
269
  else:
273
270
  return pd.DataFrame(columns=ROSTER_COLS + EVENTS) # + ['AA'])
274
271
 
275
- def _get_raw_individual_nqs(self):
276
- if not hasattr(self, 'session'):
277
- self.connect_session()
278
-
272
+ def _get_raw_individual_nqs(self, force_update=False):
279
273
  name_map = {'maxv': 'VT', 'maxub': 'UB', 'maxbb': 'BB', 'maxfx': 'FX',
280
274
  # 'maxaa': 'AA',
281
275
  'gid': 'Gymnast ID'}
276
+ if force_update:
277
+ get_data_from_api.clear_cache()
282
278
 
283
- nqsData = get_data_from_api(session=self.session, endpoint='rostermain', suffix=f'{self.year}/{self.team_id}/4').json()
279
+ nqsData = get_data_from_api(endpoint='rostermain', suffix=f'{self.year}/{self.team_id}/4').json()
284
280
  ind_nqs = [{name_map[k]: round(float(v), 4) if k != 'gid' and v != '' else (np.nan if k != 'gid' else v)
285
281
  for k, v in data.items() if k in name_map.keys()} for data in nqsData['ind']]
286
282
 
@@ -291,25 +287,25 @@ class RtnSingleTeamYear(object):
291
287
  else:
292
288
  self._raw_individual_nqs = []
293
289
 
294
- def _get_current_week(self):
295
- if not hasattr(self, 'session'):
296
- self.connect_session()
297
-
290
+ def _get_current_week(self, force_update=False):
298
291
  if not hasattr(self, 'week'):
299
- week_data = get_data_from_api(session=self.session, endpoint='currentweek', suffix=str(self.year)).json()
300
- return min(int(week_data['week']), int(week_data['max']))
292
+ if force_update:
293
+ get_data_from_api.clear_cache()
301
294
 
302
- def _get_raw_rankings(self, team_vs_ind, event, week):
303
- if not hasattr(self, 'session'):
304
- self.connect_session()
295
+ week_data = get_data_from_api(endpoint='currentweek', suffix=str(self.year)).json()
296
+ return min(int(week_data['week']), int(week_data['max']))
305
297
 
298
+ def _get_raw_rankings(self, team_vs_ind, event, week, force_update=False):
306
299
  team_ind_map = {'team': 0, 'ind': 1}
307
300
  event_api_map = {'VT': 1, 'UB': 2, 'BB': 3, 'FX': 4, 'AA': 5}
308
301
  rename_map = {'rank': 'Rank', 'gid': 'Gymnast ID', 'team': 'Team', 'tid': 'Team ID',
309
302
  'rqs': 'NQS', 'reg': 'Region', 'con': 'Conference', 'div': 'Division',
310
303
  'usag': 'USAG', 'ave': 'Average', 'high': 'High', 'name': 'Team'}
311
304
 
312
- res = get_data_from_api(session=self.session, endpoint='results', suffix=f'{self.year}/{week}/{team_ind_map[team_vs_ind]}/{event_api_map[event]}').json()
305
+ if force_update:
306
+ get_data_from_api.clear_cache()
307
+
308
+ res = get_data_from_api(endpoint='results', suffix=f'{self.year}/{week}/{team_ind_map[team_vs_ind]}/{event_api_map[event]}').json()
313
309
  if team_vs_ind == 'ind':
314
310
  self._raw_rankings[team_vs_ind][event] = [{**{rename_map.get(k): float(v) if k in ['rqs', 'ave', 'high'] else v for k, v in data.items() if k in rename_map},
315
311
  **{'Name': data['fname'] + ' ' + data['lname'], 'Event': event}}
@@ -319,9 +315,9 @@ class RtnSingleTeamYear(object):
319
315
  **{'Event': event}}
320
316
  for data in res['data']]
321
317
 
322
- def get_overall_rankings(self, team_vs_ind='team', event='AA', week=None):
318
+ def get_overall_rankings(self, team_vs_ind='team', event='AA', week=None, force_update=False):
323
319
  if not week:
324
- week = self._get_current_week()
320
+ week = self._get_current_week(force_update=force_update)
325
321
 
326
322
  if not hasattr(self, '_raw_rankings'):
327
323
  self._raw_rankings = {'team': {event: None for event in EVENT_MAP.values()},
@@ -333,7 +329,7 @@ class RtnSingleTeamYear(object):
333
329
  'Division', 'Conference', 'Region', 'USAG']}
334
330
 
335
331
  if self._raw_rankings[team_vs_ind][event] is None:
336
- self._get_raw_rankings(team_vs_ind=team_vs_ind, event=event, week=week)
332
+ self._get_raw_rankings(team_vs_ind=team_vs_ind, event=event, week=week, force_update=force_update)
337
333
 
338
334
  return pd.DataFrame(self._raw_rankings[team_vs_ind][event])[col_orders[team_vs_ind]]
339
335
 
scraping_rtn/__init__.py CHANGED
@@ -7,12 +7,12 @@ def save(df, filename):
7
7
  df.to_csv(filename, index=False)
8
8
 
9
9
 
10
- def all_teams(year):
10
+ def all_teams(year, force_update=False):
11
11
  rtn = RtnSingleTeamYear(year=year, team_name=None)
12
- return list(rtn.get_team_mapping().keys())
12
+ return list(rtn.get_team_mapping(force_update=force_update).keys())
13
13
 
14
14
 
15
- def roster(year, teams, include_hometowns=False, include_class=False, include_events=False, verbose=False):
15
+ def roster(year, teams, include_hometowns=False, include_class=False, include_events=False, verbose=False, force_update=False):
16
16
  teams = validate_input(teams)
17
17
 
18
18
  all_rosters = []
@@ -21,7 +21,7 @@ def roster(year, teams, include_hometowns=False, include_class=False, include_ev
21
21
  print(f'Getting roster for {team} ', end='\r' if team != teams[-1] else None)
22
22
  rtn = RtnSingleTeamYear(year=year, team_name=team)
23
23
  res = rtn.get_roster(include_hometowns=include_hometowns, include_class=include_class,
24
- include_events=include_events)
24
+ include_events=include_events, force_update=force_update)
25
25
  if verbose and len(res) == 0:
26
26
  print(f'\tNo roster found for {team}')
27
27
  all_rosters.append(res)
@@ -30,7 +30,7 @@ def roster(year, teams, include_hometowns=False, include_class=False, include_ev
30
30
  return pd.concat(all_rosters)[ROSTER_COLS + extra_cols]
31
31
 
32
32
 
33
- def schedule(year, teams, verbose=False):
33
+ def schedule(year, teams, verbose=False, force_update=False):
34
34
  teams = validate_input(teams)
35
35
 
36
36
  all_schedules = []
@@ -38,7 +38,7 @@ def schedule(year, teams, verbose=False):
38
38
  if verbose:
39
39
  print(f'Getting schedule for {team} ', end='\r' if team != teams[-1] else None)
40
40
  rtn = RtnSingleTeamYear(year=year, team_name=team)
41
- res = rtn.get_schedule()
41
+ res = rtn.get_schedule(force_update=force_update)
42
42
  if verbose and len(res) == 0:
43
43
  print(f'\tNo schedule found for {team}')
44
44
  all_schedules.append(res)
@@ -54,7 +54,7 @@ def team_results(year, teams, method='team_consistency', force_update=False, ver
54
54
  if verbose:
55
55
  print(f'Getting schedule and results for {team} ', end='\r' if team != teams[-1] else None)
56
56
  rtn = RtnSingleTeamYear(year=year, team_name=team)
57
- res = rtn.get_team_scores(method=method,force_update=force_update)
57
+ res = rtn.get_team_scores(method=method, force_update=force_update)
58
58
  if verbose and len(res) == 0:
59
59
  print(f'\tNo schedule and results found for {team}')
60
60
  all_results.append(res)
@@ -78,7 +78,7 @@ def individual_results(year, teams, method='by_meet', force_update=False, verbos
78
78
  return pd.concat(all_scores)[SCHEDULE_COLS + IND_RESULTS_COLS]
79
79
 
80
80
 
81
- def individual_nqs(year, teams, verbose=False):
81
+ def individual_nqs(year, teams, verbose=False, force_update=False):
82
82
  teams = validate_input(teams)
83
83
 
84
84
  all_nqs = []
@@ -86,7 +86,7 @@ def individual_nqs(year, teams, verbose=False):
86
86
  if verbose:
87
87
  print(f'Getting individual NQS for {team} ', end='\r' if team != teams[-1] else None)
88
88
  rtn = RtnSingleTeamYear(year=year, team_name=team)
89
- res = rtn.get_individual_nqs()
89
+ res = rtn.get_individual_nqs(force_update=force_update)
90
90
  if verbose and len(res) == 0:
91
91
  print(f'\tNo individual NQS found for {team}')
92
92
  all_nqs.append(res)
@@ -94,6 +94,6 @@ def individual_nqs(year, teams, verbose=False):
94
94
  return pd.concat(all_nqs)[ROSTER_COLS + EVENTS] # + ['AA']]
95
95
 
96
96
 
97
- def rankings(year, team_vs_ind='team', event='AA', week=None):
97
+ def rankings(year, team_vs_ind='team', event='AA', week=None, force_update=False):
98
98
  rtn = RtnSingleTeamYear(year=year, team_name=None)
99
- return rtn.get_overall_rankings(team_vs_ind=team_vs_ind, event=event, week=week)
99
+ return rtn.get_overall_rankings(team_vs_ind=team_vs_ind, event=event, week=week, force_update=force_update)
scraping_rtn/src.py CHANGED
@@ -21,21 +21,18 @@ def validate_input(teams):
21
21
  return teams
22
22
 
23
23
 
24
- def session_setup():
24
+ @lru_cache(maxsize=1000000)
25
+ def get_data_from_api(endpoint, suffix):
25
26
  session = requests.Session()
26
27
  retry = Retry(connect=3, backoff_factor=0.5)
27
28
  adapter = HTTPAdapter(max_retries=retry)
28
29
  session.mount('http://', adapter)
29
30
  session.mount('https://', adapter)
30
31
 
31
- return session
32
-
33
-
34
- @lru_cache(maxsize=1000000)
35
- def get_data_from_api(session, endpoint, suffix):
36
32
  url = 'https://www.roadtonationals.com/api/women/' + endpoint
37
33
  if suffix:
38
34
  url += '/' + suffix
35
+
39
36
  return session.get(url)
40
37
 
41
38
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: scraping_rtn
3
- Version: 0.0.6.0
3
+ Version: 0.0.7
4
4
  Summary: package to scrape gymnastics data from Road To Nationals
5
5
  Author-email: Claire Harmon <ceharmon220@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/cgn-charmon/scraping_rtn
@@ -0,0 +1,8 @@
1
+ scraping_rtn/RtnSingleTeamYear.py,sha256=gxjoC5agltKHPvjh4g5GyNNojRsOZ5kTS_iw8sB0uQ8,18435
2
+ scraping_rtn/__init__.py,sha256=RWz-VwgQ2qwdJaC43J_tXrnIsgbtMgGw_k2Xoby4l9M,4055
3
+ scraping_rtn/src.py,sha256=vKWqCi9tfsJC1Di2uzHm_w0xk4ooTuzXrYtUSXG5TrI,24003
4
+ scraping_rtn-0.0.7.dist-info/LICENSE,sha256=hbUs8BYJhECMTIKtiPtjcfq-0fWEtLTxB42IS_SzxWk,1069
5
+ scraping_rtn-0.0.7.dist-info/METADATA,sha256=p3qSUy81adYgaIpK4v2_8WFD7j0jAbDgnBgVXCIw6sw,667
6
+ scraping_rtn-0.0.7.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
7
+ scraping_rtn-0.0.7.dist-info/top_level.txt,sha256=PlP9g-4WmuusQ1B-LmteQpLp-jVJdnh0BX8qAzBqDEE,13
8
+ scraping_rtn-0.0.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- scraping_rtn/RtnSingleTeamYear.py,sha256=u_y_o3lfJ7KptIPqx6zrrIR3UHhVG276DTCdY75NmDU,18199
2
- scraping_rtn/__init__.py,sha256=GjqUhVyBgQhCFzLaAQ4rm1pevZv5uAuEdxeyJjaRpe0,3825
3
- scraping_rtn/src.py,sha256=58dFb8rBvSzGiI39mjvn0fqw3htcQUoTijNUWvl8Y7o,24053
4
- scraping_rtn-0.0.6.0.dist-info/LICENSE,sha256=hbUs8BYJhECMTIKtiPtjcfq-0fWEtLTxB42IS_SzxWk,1069
5
- scraping_rtn-0.0.6.0.dist-info/METADATA,sha256=DIliM14H0BFlGFgk_djpCurlHL_bR_mRnkLM4AXNpFM,669
6
- scraping_rtn-0.0.6.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
7
- scraping_rtn-0.0.6.0.dist-info/top_level.txt,sha256=PlP9g-4WmuusQ1B-LmteQpLp-jVJdnh0BX8qAzBqDEE,13
8
- scraping_rtn-0.0.6.0.dist-info/RECORD,,