def fetch_symbol_metadata_frame(api_key, cache, retries=5, environ=None, show_progress=False):
 raw_iter = _fetch_raw_metadata(api_key, cache, retries, environ)
 def item_show_func(_, _it=iter(count())):
  ('Downloading page: %d' % next(_it))
 with maybe_show_progress(raw_iter, show_progress, item_show_func=item_show_func, label='Downloading WIKI metadata: ') as blocks:
  data = pd.concat(blocks, ignore_index=True).rename(columns={'dataset_code': 'symbol', 'name': 'asset_name', 'oldest_available_date': 'start_date', 'newest_available_date': 'end_date'}).sort_values('symbol')
 data = data[(~ data.symbol.isin(excluded_symbols))]
 data.asset_name = data.asset_name.str.split(' \\(', 1).str.get(0)
 data['exchange'] = 'QUANDL'
 data['auto_close_date'] = (data['end_date'] + pd.Timedelta(days=1))
 return data

def fetch_symbol_metadata_frame ( api_key , cache , retries = 5 , environ = None , show_progress = False ) : raw_iter = _fetch_raw_metadata ( api_key , cache , retries , environ ) def item_show_func ( _ , _it = iter ( count ( ) ) ) : ( 'Downloading page: %d' % next ( _it ) ) with maybe_show_progress ( raw_iter , show_progress , item_show_func = item_show_func , label = 'Downloading WIKI metadata: ' ) as blocks : data = pd . concat ( blocks , ignore_index = True ) . rename ( columns = { 'dataset_code' : 'symbol' , 'name' : 'asset_name' , 'oldest_available_date' : 'start_date' , 'newest_available_date' : 'end_date' } ) . sort_values ( 'symbol' ) data = data [ ( ~ data . symbol . isin ( excluded_symbols ) ) ] data . asset_name = data . asset_name . str . split ( ' \\(' , 1 ) . str . get ( 0 ) data [ 'exchange' ] = 'QUANDL' data [ 'auto_close_date' ] = ( data [ 'end_date' ] + pd . Timedelta ( days = 1 ) ) return data
download quandl symbol metadata .