From bf3c4339dfcfc8f8c01c739c2577ca83835d255d Mon Sep 17 00:00:00 2001 From: Antonio Hickey Date: Fri, 25 Jun 2021 04:10:06 -0400 Subject: [PATCH] Repackaged --- CHANGELOG.txt | 6 ++++ __init__.py => FedPy/SOMA/__init__.py | 0 FedPy/SOMA/__pycache__/soma.cpython-38.pyc | Bin 0 -> 9219 bytes {SOMA => FedPy/SOMA}/soma.py | 2 +- {utils => FedPy/SOMA/utils}/__init__.py | 0 {utils => FedPy/SOMA/utils}/date_handler.py | 1 - FedPy/TOMO/__init__.py | 0 FedPy/TOMO/__pycache__/tomo.cpython-38.pyc | Bin 0 -> 2462 bytes {TOMO => FedPy/TOMO}/tomo.py | 2 +- FedPy/TOMO/utils/__init__.py | 0 FedPy/TOMO/utils/date_handler.py | 37 ++++++++++++++++++++ FedWatch.py => FedPy/__init__.py | 6 ++-- FedPy/data/__init__.py | 0 {data => FedPy/data}/soma_historical.csv | 0 LICENSE.txt | 7 ++++ MANIFEST.in | 1 + README.md | 24 +++++++++++-- TOMO/__pycache__/tomo.cpython-38.pyc | Bin 1652 -> 0 bytes setup.py | 28 +++++++++++++++ 19 files changed, 107 insertions(+), 7 deletions(-) create mode 100644 CHANGELOG.txt rename __init__.py => FedPy/SOMA/__init__.py (100%) create mode 100644 FedPy/SOMA/__pycache__/soma.cpython-38.pyc rename {SOMA => FedPy/SOMA}/soma.py (99%) rename {utils => FedPy/SOMA/utils}/__init__.py (100%) rename {utils => FedPy/SOMA/utils}/date_handler.py (98%) create mode 100644 FedPy/TOMO/__init__.py create mode 100644 FedPy/TOMO/__pycache__/tomo.cpython-38.pyc rename {TOMO => FedPy/TOMO}/tomo.py (98%) create mode 100644 FedPy/TOMO/utils/__init__.py create mode 100644 FedPy/TOMO/utils/date_handler.py rename FedWatch.py => FedPy/__init__.py (97%) create mode 100644 FedPy/data/__init__.py rename {data => FedPy/data}/soma_historical.csv (100%) create mode 100644 LICENSE.txt create mode 100644 MANIFEST.in delete mode 100644 TOMO/__pycache__/tomo.cpython-38.pyc create mode 100644 setup.py diff --git a/CHANGELOG.txt b/CHANGELOG.txt new file mode 100644 index 0000000..11d8828 --- /dev/null +++ b/CHANGELOG.txt @@ -0,0 +1,6 @@ +Change Log +========== + +1.0.1 (06/25/2021) +------------------ +- First Release diff --git a/__init__.py b/FedPy/SOMA/__init__.py similarity index 100% rename from __init__.py rename to FedPy/SOMA/__init__.py diff --git a/FedPy/SOMA/__pycache__/soma.cpython-38.pyc b/FedPy/SOMA/__pycache__/soma.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45a0170b88f84d100d587e92cd23e3a201d8f6c9 GIT binary patch literal 9219 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 NPWmz0>oZg%_a6?ig^vIL literal 0 HcmV?d00001 diff --git a/SOMA/soma.py b/FedPy/SOMA/soma.py similarity index 99% rename from SOMA/soma.py rename to FedPy/SOMA/soma.py index 1fdc432..02d450a 100644 --- a/SOMA/soma.py +++ b/FedPy/SOMA/soma.py @@ -22,7 +22,7 @@ """ # Import Modules -from utils.date_handler import DatesHandler as datesHand +from .utils.date_handler import DatesHandler as datesHand from bs4 import BeautifulSoup as bs import requests as req import pandas as pd diff --git a/utils/__init__.py b/FedPy/SOMA/utils/__init__.py similarity index 100% rename from utils/__init__.py rename to FedPy/SOMA/utils/__init__.py diff --git a/utils/date_handler.py b/FedPy/SOMA/utils/date_handler.py similarity index 98% rename from utils/date_handler.py rename to FedPy/SOMA/utils/date_handler.py index 6bdccd3..a86e36e 100644 --- a/utils/date_handler.py +++ b/FedPy/SOMA/utils/date_handler.py @@ -1,5 +1,4 @@ import datetime as dt -import calendar class DatesHandler: diff --git a/FedPy/TOMO/__init__.py b/FedPy/TOMO/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/FedPy/TOMO/__pycache__/tomo.cpython-38.pyc b/FedPy/TOMO/__pycache__/tomo.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..855204991d0eb7e846cd5880bee73bddbdd64015 GIT binary patch literal 2462 zcmc&#OK;mo5avr1Nr`e|_mQAT%O283ts*5xTcAeT=3%rA5Zi&`00}QF&0Wi?`O5Cf zj#TQD^iLE$ILF-jX9^U1?a9BOs7{@sB-=9DOM#*!`0dW@YdACC>|@t;6nK7m{Ofm@ z8jA8e3TGc3gxm1(&j5(xD?}w)tR|YTtJv3LBdPdi**D^wasYAK|^`#PLHM$b~Z95 z?uOBRYdaHRJU(~CzdmDlFNi0}w3B}urX;2eWcMx&2co|_ zh{0d^W`xtuJ{kzO;o}|vReTj9s1eoIiAMC7if<5uRG@{3VVtC~y|uA5+AseEJ=3M& z1&BxJk$!}s!I&NP#hypNsa}?PNyf#@t0$`%%`-1MjpokK6MOW00NdsK1(TP+N=(Ol z@bTXOgd)@*QGe7fD=#4V_6_zf(Z@;(#*Y=D9~p)6N*$}BQmEgXr1C-=YlU`H zB_?R~LMPSB%Gf9jVnJJh)`r%E)`7MPZ4FwhFknR;R@jA&D~>GUzEVj8#vITrEof?> zQ5Q6I&|Fy1xP?hB7L}q}ScOy6ihALa<)7_wqiBGuS2m9^Hpf6YW%6X6$%k}@A4ENf z@nJZ8zS`bpJLwRUxdTxK!a(c;WKlq$LwclP+(9bzBg#7mH-j4;9P2PDAWaYGlO&#m z|JBY9LM}GHO21f@M*JKOvQxgg)?<)_45+Ti+DZ8PL|TM~F(eF?^<+k?QgXvVnN&$h zu}Ka0;IvdtuAm^0S2@e_jQ7jJ5JnNr1tqd_5XJ*~jAtF|0KUq-4ozP~f3&G)rG{ zU+X@Ul`Idyi#B>Om^yCm#;Mqt`7xL}Qd%=7a^DiuvNiNg*gK7ezMa4y1Uq28td#DR zDtWE28<>YzJ9}9|I~)>iz&lWH9}Z`TWueS2sNd2)DWaEPRe3Qe>Lu0G49!vNx}#g_ z{B_jj>1$}}x%Us#9W`*@_Q`e&wE&r6!B^ITU!e0p)dIJy01niH2Gj$n1LInO(uJ8+ zKf`liIdHr>b_=)UIIDo&%tWXn;Qufi0jnHaMyMgw5nKfPZH9HQXvq62djluFiSQP}+Xxt*(aJ25hu-P6A}i&+!rp-i%?7)QlRrTC z5aAktuXno-Srf&N5I#m|AzTOWSLS&YL??GuX{I#LI@ZCNm{U`@2|ek|^3}WopgW%a9jAtX&ARt*31Z))! zWuGFPnpgJFMrHtDR5-@W(hS3DmAa weekday: + last_week = d - dt.timedelta(days=7) + offset = (last_week.weekday() - weekday) % 7 + + return last_week - dt.timedelta(days=offset) + + else: + offset = (d.weekday() - weekday) % 7 + + return d - dt.timedelta(days=offset) + + def next_weekday(d, weekday): + + days_forward = weekday - d.weekday() + if days_forward <= 0: + days_forward += 7 + + return d + dt.timedelta(days_forward) + + def this_weekday(d, weekday): + + days_prev = weekday - d.weekday() + + return d + dt.timedelta(days_prev) diff --git a/FedWatch.py b/FedPy/__init__.py similarity index 97% rename from FedWatch.py rename to FedPy/__init__.py index ef2a72e..0dedb87 100644 --- a/FedWatch.py +++ b/FedPy/__init__.py @@ -1,5 +1,5 @@ -from SOMA.soma import SOMA -from TOMO.tomo import TOMO +from .SOMA.soma import SOMA +from .TOMO.tomo import TOMO import pandas as pd """ @@ -78,3 +78,5 @@ def tomo_rrp(): return TOMO.recent_rrp() + + diff --git a/FedPy/data/__init__.py b/FedPy/data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/data/soma_historical.csv b/FedPy/data/soma_historical.csv similarity index 100% rename from data/soma_historical.csv rename to FedPy/data/soma_historical.csv diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..d801f86 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright 2021 Antonio Hickey + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..28ce92e --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +global-include *.txt *.py *.csv diff --git a/README.md b/README.md index d80f59e..a23f5b6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,22 @@ -# FedWatch -Python library for all things Federal Reserve related +# FedPy +## _Everything Federal Reserve Related_ + +[![Build Status](https://travis-ci.com/antonio-hickey/FedPy.svg?branch=main)](https://travis-ci.com/antonio-hickey/FedPy) + +Open source python package for seamlessly extracting data +related to Federal Reserve and integrating for your own use. + +## Features + +- Get current SOMA portfolio value +- Get current SOMA portfolio individual holdings +- Get historic SOMA portfolio value +- Get current TOMO portfolio value + +## Installation +Install using pip: + + +```sh +pip install FedPy +``` diff --git a/TOMO/__pycache__/tomo.cpython-38.pyc b/TOMO/__pycache__/tomo.cpython-38.pyc deleted file mode 100644 index 461d27e7e8f14856fc35e33a7d9d0a672e64ee79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1652 zcmcIk&2QX96!+L;ukH12Xev;9p!mRnJ+OwT;t)Y;O2miMBq-gA))zDDnQWH$t25&y zYk5y85`O_F4#|;!hZCAB;*h@pi4$+UNlCafmfyVhX6AkT-kW(o82AQ^pa1;r`?zNq ze`w+6ut0bWzjy?M8nHnUH8Yf(v4u2mWjMEEr{i(fi(Sy+%!~c63~E#7wLzUTGwxIT z%oz2WpL|*7<+xgeo8g4zRmllognJb$!X3honAAKca$Xi9^!;aL%~M7rax7{2j2#?_x_kb`XMgWOPQEX9@TCa^5 zcZu2xPxf~9nzuWL+UbM|IWK0Ne9Pz>*wGdELL2=Zh%_WRH!lEdiheZj8)ty`5#|r5 zwKNJazci$Ej$7jbEs?Za^n*j~GjnOS=6R1gptV|y_U;=?++ym&Y{Trq?7-~9+=ICf zv)f`g5x@zr_4J8zmkurv9m1LqnzdV+K4{P_O#qs=ZfORsL+`Y9+iTs{Z~JY~4(R$X z-g4Luq55}sFEx6XLm$;t=sW?t&P=yn+INcZ@@M*EorHh~r&>m2oME6X>P9@_7 z$s%3&dCEj|{BiP8q}L+OB%iZm_9D+3@_$)=N`&0~y!dQG;p`L~d4<^6oN;Iqjv%GD zUtYKFoWeC=B%=_$3UVTAK9>tE#RF2Oy1R2G4@=tgwGF{KRr9VEWGP8j@vcb}b&-a%zXolME_>H;Uk*(Y$DM-$eMEOaQm$c3_A0)}Enq*fiy(FP! znj|~~&s`=r$a`9cf!u*#XvQ_M)oDfne;;JE4sTp0#v0k=aP|0ceL1;)j+8YO54mnJ yepibwRJ4ZoOK@#aITairLYWoqY~Jv!A?4b=az9-~{z$j0&<`B$2Pn|6nEwDjN!lO) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..45b80ff --- /dev/null +++ b/setup.py @@ -0,0 +1,28 @@ +from setuptools import setup, find_packages + +classifiers = [ + 'Development Status :: 2 - Pre-Alpha', + 'License :: OSI Approved :: MIT License', + 'Programming Language :: Python :: 3', +] + +setup( + name='FedPy', + version='1.0.1', + description='Seamlessly extract official Federal Reserve data for your own use.', + lang_descrip=open('README.md').read() + '\n\n' + open('CHANGELOG.txt').read(), + url='https://github.com/antonio-hickey/FedPy', + author='Antonio Hickey', + author_email="antoniohickey99@gmail.com", + license='MIT', + classifiers=classifiers, + keywords=['Federal Reserve', 'Economics', 'Finance'], + packages = find_packages(), + install_requires=[ + 'beautifulsoup4', + 'lxml', + 'pandas', + 'datetime', + 'requests', + ], +)