Source code for pyptax.ptax

from pyptax.client import Ptax
from pyptax.models import Bulletin, HistoricalBulletin
from pyptax.resources import CloseResource, HistoricalResource, IntermediaryResource


[docs]def close(date: str) -> Bulletin: """ Retrieve closing Ptax rates on a certain date. Parameters ---------- date Year, month and day of the date to be searched. Format - "YYYY-MM-DD" Returns ------- Bulletin A Bulletin object with datetime, bid and ask attributes Raises ------ DateFormatError If fails to parse the informed date Examples -------- >>> bulletin = close("2020-01-20") >>> bulletin Bulletin( datetime="2020-01-20 13:09:02.871", bid=4.1823, sk=4.1829, bulletin_type="close" ) >>> bulletin.bid 4.1823 >>> bulletin.ask 4.1829 >>> bulletin.as_dict { "datetime": "2020-01-20 13:09:02.871", "bid": 4.1823, "ask": 4.1829, "bulletin_type": "close" } """ resource = CloseResource(date) return Ptax(resource).response()
[docs]def historical(start_date: str, end_date: str) -> HistoricalBulletin: """ Retrieve historical closing Ptax rates for the requested time period. Parameters ---------- start_date Beginning of the time period to be searched. Format - 'YYYY-MM-DD' end_date End of the time period to be searched. Format - 'YYYY-MM-DD' Returns ------- HistoricalBulletin A HistoricalBulletin object with start_date, end_date and bulletins with a list of Bulletins. Raises ------ DateFormatError If fails to parse the informed date ClientError If Ptax Service response returns an error UnavailableDataError If receives an empty list from Ptax Service Examples -------- >>> historical_bulletin = historical("2020-01-02", "2020-01-03") >>> historical_bulletin HistoricalBulletin( start_date="2020-01-02", end_date="2020-01-04", bulletins=[ Bulletin( datetime="2020-01-02 13:11:10.762", bid=4.0207, ask=4.0213, bulletin_type="close" ), Bulletin( datetime="2020-01-03 13:06:22.606", bid=4.0516, ask=4.0522, bulletin_type="close" ), ], ) >>> historical_bulletin.as_dict { "start_date": "2020-01-02", "end_date": "2020-01-04", "bulletins": [ { "datetime": "2020-01-02 13:11:10.762", "bid": 4.0207, "ask": 4.0213, "bulletin_type": "close" }, { "datetime": "2020-01-03 13:06:22.606", "bid": 4.0516, "ask": 4.0522, "bulletin_type": "close" }, ], } """ resource = HistoricalResource(start_date, end_date) return Ptax(resource).response()
[docs]def intermediary(date: str): """ Retrieve intermediary bulletins of Ptax rates for the requested date. Parameters ---------- date Date to be searched. Format - 'YYYY-MM-DD' Returns ------- IntermediaryBulletin A IntermediaryBulletin object with date and bulletins with a list of Bulletins. Raises ------ DateFormatError If fails to parse the informed date ClientError If Ptax Service response returns an error UnavailableDataError If receives an empty list from Ptax Service Examples -------- >>> intermediary("2020-01-02") IntermediaryBulletin( date='2020-01-02', bulletins=[ Bulletin( datetime='2020-01-02 10:08:18.114', bid=4.0101, ask=4.0107, bulletin_type='open' ), Bulletin( datetime='2020-01-02 11:03:40.704', bid=4.0118, ask=4.0124, bulletin_type='intermediary' ), Bulletin( datetime='2020-01-02 12:10:55.168', bid=4.0302, ask=4.0308, bulletin_type='intermediary' ), Bulletin( datetime='2020-01-02 13:11:10.756', bid=4.0305, ask=4.0311, bulletin_type='intermediary' ), Bulletin( datetime='2020-01-02 13:11:10.762', bid=4.0207, ask=4.0213, bulletin_type='close' ) ] ) """ resource = IntermediaryResource(date) return Ptax(resource).response()