Skip to content

Commit

Permalink
Merge pull request #168 from JECSand/development
Browse files Browse the repository at this point in the history
Session Management Refactor & Hardening
  • Loading branch information
JECSand authored Dec 13, 2023
2 parents 29177c6 + 226620d commit 8e30334
Show file tree
Hide file tree
Showing 10 changed files with 880 additions and 50 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ on:

jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
Expand Down
4 changes: 3 additions & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,6 @@
1.16 07/17/2023 -- Minor code cleanup in test_yahoofinancials.py.
1.16 07/17/2023 -- Fixed HTTP 401 error when executing get_current_price() as reported in #152.
1.17 10/30/2023 -- Added a fix for 404 error reported in #157.
1.18 12/12/2023 -- Merged in branch from shaunpatterson to fix #164.
1.18 12/09/2023 -- Merged in branch from shaunpatterson to fix #164.
1.19 12/12/2023 -- Refactored session management system to handle cookie and crumbs better.
1.19 12/12/2023 -- Added fixes for #167, #166, #160.
7 changes: 3 additions & 4 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ A python module that returns stock, cryptocurrency, forex, mutual fund, commodit
.. image:: https://static.pepy.tech/badge/yahoofinancials/week
:target: https://pepy.tech/project/yahoofinancials

Current Version: v1.18
Current Version: v1.19

Version Released: 12/09/2023
Version Released: 12/12/2023

Report any bugs by opening an issue here: https://github.com/JECSand/yahoofinancials/issues

Expand Down Expand Up @@ -47,8 +47,7 @@ A powerful financial data module used for pulling both fundamental and technical

Installation
-------------
- yahoofinancials runs on Python 3.7, 3.8, 3.9, 3.10, and 3.11.
- This package depends on pytz & requests to work.
- yahoofinancials runs on Python 3.7, 3.8, 3.9, 3.10, 3.11, and 3.12

1. Installation using pip:

Expand Down
14 changes: 10 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,24 @@

setup(
name='yahoofinancials',
version='1.18',
version='1.19',
description='A powerful financial data module used for pulling both fundamental and technical data from Yahoo Finance',
long_description=long_description,
url='https://github.com/JECSand/yahoofinancials',
download_url='https://github.com/JECSand/yahoofinancials/archive/1.18.tar.gz',
download_url='https://github.com/JECSand/yahoofinancials/archive/1.19.tar.gz',
author='Connor Sanders',
author_email='connor@exceleri.com',
license='MIT',
keywords=['finance data', 'stocks', 'commodities', 'cryptocurrencies', 'currencies', 'forex', 'yahoo finance'],
packages=['yahoofinancials'],
install_requires=[
"pytz",
"requests>=2.26",
"pytz>=2022.5",
"requests>=2.31",
"appdirs>=1.4.4",
"frozendict>=2.3.4",
"peewee>=3.16.2",
"beautifulsoup4>=4.11.1",
"lxml>=4.9.1",
],
classifiers=[
'Development Status :: 5 - Production/Stable',
Expand All @@ -37,6 +42,7 @@
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
],
zip_safe=False
)
45 changes: 32 additions & 13 deletions test/test_yahoofinancials.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# YahooFinancials Unit Tests v1.18
# Version Released: 12/09/2023
# YahooFinancials Unit Tests v1.19
# Version Released: 12/12/2023
# Author: Connor Sanders
# Tested on Python 3.7, 3.8, 3.9, 3.10, and 3.11
# Copyright (c) 2023 Connor Sanders <jecsand@pm.me>
Expand Down Expand Up @@ -107,66 +107,85 @@ def test_yf_concurrency(self):
def test_yf_module_methods(self):

# 10 Day Average Daily Volume
if isinstance(self.test_yf_stock_single.get_ten_day_avg_daily_volume(), int):
out = self.test_yf_stock_single.get_ten_day_avg_daily_volume()
if isinstance(out, int):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Current Price
if isinstance(self.test_yf_stock_single.get_current_price(), float):
out = self.test_yf_stock_single.get_current_price()
if isinstance(out, float):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Net Income
if isinstance(self.test_yf_stock_single.get_net_income(), float):
out = self.test_yf_stock_single.get_net_income()
if isinstance(out, float):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Financial Data
if self.test_yf_stock_single.get_financial_data().get("C").get("financialCurrency") == "USD":
out = self.test_yf_stock_single.get_financial_data()
if out.get("C").get("financialCurrency") == "USD":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Profile Data
if self.test_yf_stock_single.get_stock_profile_data().get("C").get("sector") == "Financial Services":
out = self.test_yf_stock_single.get_stock_profile_data()
if out.get("C").get("sector") == "Financial Services":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Summary Data
if self.test_yf_stock_single.get_summary_data().get("C").get("currency") == "USD":
out = self.test_yf_stock_single.get_summary_data()
if out.get("C").get("currency") == "USD":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Price Data
if self.test_yf_stock_single.get_stock_price_data().get("C").get("exchangeName") == "NYSE":
out = self.test_yf_stock_single.get_stock_price_data()
if out.get("C").get("exchangeName") == "NYSE":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Key Statistics
if isinstance(self.test_yf_stock_single.get_key_statistics_data().get("C").get("forwardPE"), float):
out = self.test_yf_stock_single.get_key_statistics_data()
if isinstance(out.get("C").get("forwardPE"), float):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock ESG SCORES
if self.test_yf_stock_single.get_esg_score_data().get("C").get("peerGroup") == "Banks":
out = self.test_yf_stock_single.get_esg_score_data()
if out.get("C").get("peerGroup") == "Banks":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Treasuries
if isinstance(self.test_yf_treasuries_single.get_current_price(), float):
out = self.test_yf_stock_single.get_current_price()
if isinstance(out, float):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Earnings data check
if isinstance(self.test_yf_stock_single.get_stock_earnings_data().get("C").get("earningsChart").get("quarterly")[0].get("actual"), float):
out = self.test_yf_stock_single.get_stock_earnings_data()
if isinstance(out.get("C").get("earningsChart").get("quarterly")[0].get("actual"), float):
self.assertEqual(True, True)
else:
self.assertEqual(False, True)

# Stock Data
out = self.test_yf_stock_single.get_stock_data()
if out.get("C").get("sector") == "Financial Services":
self.assertEqual(True, True)
else:
self.assertEqual(False, True)
Expand Down
Loading

0 comments on commit 8e30334

Please sign in to comment.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy