JECSand / yahoofinancials

A powerful financial data module used for pulling data from Yahoo Finance. This module can pull fundamental and technical data for stocks, indexes, currencies, cryptos, ETFs, Mutual Funds, U.S. Treasuries, and commodity futures.
https://pypi.python.org/pypi/yahoofinancials
MIT License
896 stars 214 forks source link

Problem with Demo.py #174

Open micksulley opened 6 months ago

micksulley commented 6 months ago

My code has started to fail again over the last few days. Running Ubuntu Server.I have installed v1.20 and rebooted. If I run the demo.py script this is what I see -

$ python demo.py
Traceback (most recent call last):
  File "/home/mick/Documents/Programs/shares/yahoo/yahoofinancials-master20231221/demo.py", line 18, in <module>
    from yahoofinancials import YahooFinancials as YF
  File "/home/mick/Documents/Programs/shares/yahoo/yahoofinancials-master20231221/yahoofinancials/__init__.py", line 1, in <module>
    from yahoofinancials.yf import YahooFinancials
  File "/home/mick/Documents/Programs/shares/yahoo/yahoofinancials-master20231221/yahoofinancials/yf.py", line 45, in <module>
    from yahoofinancials.data import YahooFinanceData
  File "/home/mick/Documents/Programs/shares/yahoo/yahoofinancials-master20231221/yahoofinancials/data.py", line 12, in <module>
    from yahoofinancials.sessions import SessionManager, _init_session
  File "/home/mick/Documents/Programs/shares/yahoo/yahoofinancials-master20231221/yahoofinancials/sessions.py", line 11, in <module>
    from frozendict import frozendict
ModuleNotFoundError: No module named 'frozendict'

Have I got something wrong or have Yahoo changed things again and I need to wait for an update? Thanks Mick

JECSand commented 6 months ago

@micksulley It seems as if you are are missing some of the new dependencies. Did you install via pip? If not could you try running (from the root directory):

python setup.py install

micksulley commented 6 months ago

I think I am doing something wrong here. I uninstalled and installed again withpip install yahoofinancials I then ran setup.py and this is what I get

mick@holly:~/.local/lib/python3.10/site-packages/yahoofinancials$ sudo python setup.py install
running install
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/setuptools/command/easy_install.py:158: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
running bdist_egg
running egg_info
writing yahoofinancials.egg-info/PKG-INFO
writing dependency_links to yahoofinancials.egg-info/dependency_links.txt
writing requirements to yahoofinancials.egg-info/requires.txt
writing top-level names to yahoofinancials.egg-info/top_level.txt
error: package directory 'yahoofinancials' does not exist
JECSand commented 6 months ago

@micksulley Did you ever resolve this? You shouldn't need to run setup.py if installing via pip.

micksulley commented 5 months ago

I did reply via email, here it is again. No I didn't resolve it. I dropped it over the holiday but just tried again. I re-installed and ran test_yahoofinancials.py downloaded from the website.

It doesn't fail, but it doesn't finish either. It has been running for 2-3 hours so far.

I get loads of warning messages, e.g

ResourceWarning: Enable tracemalloc to get the object allocation traceback /usr/lib/python3.10/queue.py:133: ResourceWarning: unclosed <ssl.SSLSocket fd=13, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 33920), raddr=('34.255.244.78', 443)> with self.not_full: ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 53568), raddr=('87.248.114.12', 443)>

session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout)

ResourceWarning: Enable tracemalloc to get the object allocation traceback /usr/lib/python3.10/ssl.py:1184: ResourceWarning: unclosed <ssl.SSLSocket fd=19, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 59874), raddr=('54.77.196.184', 443)> return self._sslobj.getpeercert(binary_form)

There are loads of messages like that. My server is 192.168.1.99. Running Ubuntu Server 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)

I left it running and it did eventually finish with an error after 4 hrs plus. This is the end of the output -

ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=31, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 39956), raddr=('87.248.114.11', 443)> session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=33, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 51130), raddr=('54.77.196.184', 443)> session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=38, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 51138), raddr=('54.77.196.184', 443)> session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=41, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 36836), raddr=('87.248.114.12', 443)> session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout) ResourceWarning: Enable tracemalloc to get the object allocation traceback /home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py:208: ResourceWarning: unclosed <ssl.SSLSocket fd=43, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.1.99', 39958), raddr=('87.248.114.11', 443)> session, crumb = _init_session(None, proxies=self._get_proxy(), timeout=self.timeout) ResourceWarning: Enable tracemalloc to get the object allocation traceback E

ERROR: test_yf_module_methods (main.TestModule)

Traceback (most recent call last): File "/home/mick/v07_0/test_yahoofinancials.py", line 141, in test_yf_module_methods out = self.test_yf_stock_single.get_ten_day_avg_daily_volume() File "/home/mick/.local/lib/python3.10/site-packages/yahoofinancials/yf.py", line 249, in get_ten_day_avg_daily_volume return self._stock_summary_data('averageDailyVolume10Day') File "/home/mick/.local/lib/python3.10/site-packages/yahoofinancials/yf.py", line 183, in _stock_summary_data sum_data = self.get_summary_data() File "/home/mick/.local/lib/python3.10/site-packages/yahoofinancials/yf.py", line 136, in get_summary_data return self.get_clean_data(self.get_stock_tech_data('summaryDetail'), 'summaryDetail') File "/home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py", line 660, in get_stock_tech_data return self.get_stock_data(tech_type=tech_type) File "/home/mick/.local/lib/python3.10/site-packages/yahoofinancials/data.py", line 631, in get_stock_data data.update(dict_ent) TypeError: 'NoneType' object is not iterable


Ran 7 tests in 15978.086s

FAILED (errors=1)