1
+ from __future__ import annotations
2
+
1
3
import re
2
4
import warnings
5
+ from collections .abc import Generator
3
6
from datetime import date , datetime
4
7
from decimal import Decimal
5
- from typing import Any , Callable , Generator
8
+ from typing import Any , Callable
6
9
7
10
import requests
8
11
from tenacity import (
@@ -197,25 +200,34 @@ def info(self) -> dict:
197
200
return self ._parse_info (data )
198
201
raise ValueError ("No data available" )
199
202
200
- def period (
201
- self , from_date : "date | datetime | str" , to_date : "date | datetime | str"
202
- ) -> Generator [ dict , None , None ] :
203
- if data := self ._request (
203
+ def _fetch_period (
204
+ self , from_date : str | date | datetime , to_date : str | date | datetime
205
+ ) -> dict :
206
+ return self ._request (
204
207
"periods" , from_date = coerce_date (from_date ), to_date = coerce_date (to_date )
205
- ):
206
- return self ._parse_transactions (data )
208
+ )
209
+
210
+ def period (
211
+ self , from_date : str | date | datetime , to_date : str | date | datetime
212
+ ) -> Generator [dict ]:
213
+ data = self ._fetch_period (from_date , to_date )
214
+ return self ._parse_transactions (data )
215
+
216
+ def transactions (
217
+ self , from_date : str | date | datetime , to_date : str | date | datetime
218
+ ) -> tuple [dict , Generator [dict ]]:
219
+ if data := self ._fetch_period (from_date , to_date ):
220
+ return (self ._parse_info (data ), self ._parse_transactions (data ))
207
221
raise ValueError ("No data available" )
208
222
209
- def statement (self , year : int , number : int ) -> Generator [ dict , None , None ] :
223
+ def statement (self , year , number ) :
210
224
if data := self ._request ("by-id" , year = year , number = number ):
211
225
return self ._parse_transactions (data )
212
226
raise ValueError ("No data available" )
213
227
214
- def last (
215
- self ,
216
- from_id : "int | None" = None ,
217
- from_date : "date | datetime | str | None" = None ,
218
- ) -> Generator [dict , None , None ]:
228
+ def _fetch_last (
229
+ self , from_id : str | None = None , from_date : str | date | datetime | None = None
230
+ ) -> dict :
219
231
if from_id and from_date :
220
232
raise ValueError ("Only one constraint is allowed." )
221
233
@@ -225,5 +237,16 @@ def last(
225
237
self ._request ("set-last-date" , from_date = coerce_date (from_date ))
226
238
227
239
if data := self ._request ("last" ):
228
- return self . _parse_transactions ( data )
240
+ return data
229
241
raise ValueError ("No data available" )
242
+
243
+ def last (
244
+ self , from_id : str | None = None , from_date : str | date | datetime | None = None
245
+ ) -> Generator [dict ]:
246
+ return self ._parse_transactions (self ._fetch_last (from_id , from_date ))
247
+
248
+ def last_transactions (
249
+ self , from_id : str | None = None , from_date : str | date | datetime | None = None
250
+ ) -> tuple [dict , Generator [dict ]]:
251
+ data = self ._fetch_last (from_id , from_date )
252
+ return (self ._parse_info (data ), self ._parse_transactions (data ))
0 commit comments