def retrieve_asset(self, sid, default_none=False): """ Retrieve the Asset object of a given sid. """ if isinstance(sid, Asset): return sid try: asset = self._asset_cache[sid] except KeyError: asset_type = self.asset_type_by_sid(sid) if asset_type == 'equity': asset = self._retrieve_equity(sid) elif asset_type == 'future': asset = self._retrieve_futures_contract(sid) else: asset = None # Cache the asset if it has been retrieved if asset is not None: self._asset_cache[sid] = asset if asset is not None: return asset elif default_none: return None else: raise SidNotFound(sid=sid)
def retrieve_asset(self, sid, default_none=False): if isinstance(sid, Asset): return sid asset = self.cache.get(sid) if asset is not None: return asset elif default_none: return None else: raise SidNotFound(sid=sid)
def lookup_generic(self, asset_convertible_or_iterable, as_of_date): """ Convert a AssetConvertible or iterable of AssetConvertibles into a list of Asset objects. This method exists primarily as a convenience for implementing user-facing APIs that can handle multiple kinds of input. It should not be used for internal code where we already know the expected types of our inputs. Returns a pair of objects, the first of which is the result of the conversion, and the second of which is a list containing any values that couldn't be resolved. """ matches = [] missing = [] # Interpret input as scalar. if isinstance(asset_convertible_or_iterable, AssetConvertible): self._lookup_generic_scalar( asset_convertible=asset_convertible_or_iterable, as_of_date=as_of_date, matches=matches, missing=missing, ) try: return matches[0], missing except IndexError: if hasattr(asset_convertible_or_iterable, '__int__'): raise SidNotFound(sid=asset_convertible_or_iterable) else: raise SymbolNotFound(symbol=asset_convertible_or_iterable) # Interpret input as iterable. try: iterator = iter(asset_convertible_or_iterable) except TypeError: raise NotAssetConvertible( "Input was not a AssetConvertible " "or iterable of AssetConvertible." ) for obj in iterator: self._lookup_generic_scalar(obj, as_of_date, matches, missing) return matches, missing
def retrieve_asset(self, sid, default_none=False): if isinstance(sid, Asset): return sid try: asset = self._asset_cache[sid] except KeyError: asset_type = self.asset_type_by_sid(sid) if asset_type == 'equity': asset = self._retrieve_equity(sid) elif asset_type == 'future': asset = self._retrieve_futures_contract(sid) else: asset = None self._asset_cache[sid] = asset if asset is not None: return asset elif default_none: return None else: raise SidNotFound(sid=sid)