Add Lookup module documentation and examples

This commit is contained in:
Dhruvan Gnanadhandayuthapani
2025-03-16 02:58:39 +01:00
parent 3a7b802b20
commit 8908724f3c
5 changed files with 87 additions and 32 deletions
+33
View File
@@ -0,0 +1,33 @@
import yfinance as yf
# Get All
all = yf.Lookup("AAPL").all
all = yf.Lookup("AAPL").get_all(count=100)
# Get Stocks
stock = yf.Lookup("AAPL").stock
stock = yf.Lookup("AAPL").get_stock(count=100)
# Get Mutual Funds
mutualfund = yf.Lookup("AAPL").mutualfund
mutualfund = yf.Lookup("AAPL").get_mutualfund(count=100)
# Get ETFs
etf = yf.Lookup("AAPL").etf
etf = yf.Lookup("AAPL").get_etf(count=100)
# Get Indices
index = yf.Lookup("AAPL").index
index = yf.Lookup("AAPL").get_index(count=100)
# Get Futures
future = yf.Lookup("AAPL").future
future = yf.Lookup("AAPL").get_future(count=100)
# Get Currencies
currency = yf.Lookup("AAPL").currency
currency = yf.Lookup("AAPL").get_currency(count=100)
# Get Cryptocurrencies
cryptocurrency = yf.Lookup("AAPL").cryptocurrency
cryptocurrency = yf.Lookup("AAPL").get_cryptocurrency(count=100)
+2
View File
@@ -18,6 +18,7 @@ The following are the publicly available classes, and functions exposed by the `
- :attr:`Market <yfinance.Market>`: Class for accessing market summary.
- :attr:`download <yfinance.download>`: Function to download market data for multiple tickers.
- :attr:`Search <yfinance.Search>`: Class for accessing search results.
- :attr:`Lookup <yfinance.Lookup>`: Class for looking up tickers.
- :attr:`Sector <yfinance.Sector>`: Domain class for accessing sector information.
- :attr:`Industry <yfinance.Industry>`: Domain class for accessing industry information.
- :attr:`Market <yfinance.Market>`: Class for accessing market status & summary.
@@ -39,6 +40,7 @@ The following are the publicly available classes, and functions exposed by the `
yfinance.analysis
yfinance.market
yfinance.search
yfinance.lookup
yfinance.sector_industry
yfinance.screener
yfinance.functions
+14 -2
View File
@@ -1,5 +1,5 @@
=====================
Search & News
Search & Lookup
=====================
.. currentmodule:: yfinance
@@ -14,9 +14,21 @@ The `Search` module, allows you to access search data in a Pythonic way.
Search
Search Sample Code
The `Lookup` module, allows you to look up tickers in a Pythonic way.
.. autosummary::
:toctree: api/
Lookup
Sample Code
------------------
The `Search` module, allows you to access search data in a Pythonic way.
.. literalinclude:: examples/search.py
:language: python
The `Lookup` module, allows you to look up tickers in a Pythonic way.
.. literalinclude:: examples/lookup.py
:language: python
+13 -11
View File
@@ -1,5 +1,7 @@
import unittest
import pandas as pd
from tests.context import yfinance as yf, session_gbl
@@ -11,55 +13,55 @@ class TestLookup(unittest.TestCase):
def test_get_all(self):
result = self.lookup.get_all(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_equity(self):
result = self.lookup.get_equity(count=5)
def test_get_stock(self):
result = self.lookup.get_stock(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_mutualfund(self):
result = self.lookup.get_mutualfund(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_etf(self):
result = self.lookup.get_etf(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_index(self):
result = self.lookup.get_index(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_future(self):
result = self.lookup.get_future(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_currency(self):
result = self.lookup.get_currency(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_get_cryptocurrency(self):
result = self.lookup.get_cryptocurrency(count=5)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 5)
def test_large_all(self):
result = self.lookup.get_all(count=1000)
self.assertIsInstance(result, list)
self.assertIsInstance(result, pd.DataFrame)
self.assertEqual(len(result), 1000)
+25 -19
View File
@@ -21,6 +21,8 @@
import json as _json
import pandas as pd
from . import utils
from .const import _QUERY1_URL_
from .data import YfData
@@ -92,16 +94,20 @@ class Lookup:
return data
@staticmethod
def _parse_response(response: dict) -> list:
def _parse_response(response: dict) -> pd.DataFrame:
finance = response.get("finance", {})
result = finance.get("result", [])
result = result[0] if len(result) > 0 else {}
return result.get("documents", [])
documents = result.get("documents", [])
df = pd.DataFrame(documents)
if "symbol" not in df.columns:
return pd.DataFrame()
return df.set_index("symbol")
def _get_data(self, lookup_type: str, count: int = 25) -> list:
def _get_data(self, lookup_type: str, count: int = 25) -> pd.DataFrame:
return self._parse_response(self._fetch_lookup(lookup_type, count))
def get_all(self, count=25) -> list:
def get_all(self, count=25) -> pd.DataFrame:
"""
Returns all available financial instruments.
@@ -110,7 +116,7 @@ class Lookup:
"""
return self._get_data("all", count)
def get_stock(self, count=25) -> list:
def get_stock(self, count=25) -> pd.DataFrame:
"""
Returns stock related financial instruments.
@@ -119,7 +125,7 @@ class Lookup:
"""
return self._get_data("equity", count)
def get_mutualfund(self, count=25) -> list:
def get_mutualfund(self, count=25) -> pd.DataFrame:
"""
Returns mutual funds related financial instruments.
@@ -128,7 +134,7 @@ class Lookup:
"""
return self._get_data("mutualfund", count)
def get_etf(self, count=25) -> list:
def get_etf(self, count=25) -> pd.DataFrame:
"""
Returns ETFs related financial instruments.
@@ -137,7 +143,7 @@ class Lookup:
"""
return self._get_data("etf", count)
def get_index(self, count=25) -> list:
def get_index(self, count=25) -> pd.DataFrame:
"""
Returns Indices related financial instruments.
@@ -146,7 +152,7 @@ class Lookup:
"""
return self._get_data("index", count)
def get_future(self, count=25) -> list:
def get_future(self, count=25) -> pd.DataFrame:
"""
Returns Futures related financial instruments.
@@ -155,7 +161,7 @@ class Lookup:
"""
return self._get_data("future", count)
def get_currency(self, count=25) -> list:
def get_currency(self, count=25) -> pd.DataFrame:
"""
Returns Currencies related financial instruments.
@@ -164,7 +170,7 @@ class Lookup:
"""
return self._get_data("currency", count)
def get_cryptocurrency(self, count=25) -> list:
def get_cryptocurrency(self, count=25) -> pd.DataFrame:
"""
Returns Cryptocurrencies related financial instruments.
@@ -174,41 +180,41 @@ class Lookup:
return self._get_data("cryptocurrency", count)
@property
def all(self) -> list:
def all(self) -> pd.DataFrame:
"""Returns all available financial instruments."""
return self._get_data("all")
@property
def stock(self) -> list:
def stock(self) -> pd.DataFrame:
"""Returns stock related financial instruments."""
return self._get_data("equity")
@property
def mutualfund(self) -> list:
def mutualfund(self) -> pd.DataFrame:
"""Returns mutual funds related financial instruments."""
return self._get_data("mutualfund")
@property
def etf(self) -> list:
def etf(self) -> pd.DataFrame:
"""Returns ETFs related financial instruments."""
return self._get_data("etf")
@property
def index(self) -> list:
def index(self) -> pd.DataFrame:
"""Returns Indices related financial instruments."""
return self._get_data("index")
@property
def future(self) -> list:
def future(self) -> pd.DataFrame:
"""Returns Futures related financial instruments."""
return self._get_data("future")
@property
def currency(self) -> list:
def currency(self) -> pd.DataFrame:
"""Returns Currencies related financial instruments."""
return self._get_data("currency")
@property
def cryptocurrency(self) -> list:
def cryptocurrency(self) -> pd.DataFrame:
"""Returns Cryptocurrencies related financial instruments."""
return self._get_data("cryptocurrency")