1111from threading import Lock
1212
1313from .config import (
14- CREDIT_TRACKER_PATH ,
1514 TWELVE_DATA_DAILY_LIMIT ,
16- TWELVE_DATA_MINUTE_LIMIT
15+ TWELVE_DATA_MINUTE_LIMIT ,
16+ SGT ,
17+ get_now_sgt ,
1718)
1819
1920
@@ -39,9 +40,10 @@ def _load_state(self):
3940 self ._last_date = state .get ("last_date" , "" )
4041
4142 # Reset if it's a new day
42- if self ._last_date != str (date .today ()):
43+ today_sgt = str (get_now_sgt ().date ())
44+ if self ._last_date != today_sgt :
4345 self ._daily_credits = 0
44- self ._last_date = str ( date . today ())
46+ self ._last_date = today_sgt
4547 except (json .JSONDecodeError , KeyError ):
4648 self ._reset_state ()
4749 else :
@@ -50,7 +52,7 @@ def _load_state(self):
5052 def _reset_state (self ):
5153 """Reset to initial state."""
5254 self ._daily_credits = 0
53- self ._last_date = str (date . today ())
55+ self ._last_date = str (get_now_sgt (). date ())
5456 self ._save_state ()
5557
5658 def _save_state (self ):
@@ -59,17 +61,18 @@ def _save_state(self):
5961 json .dump ({
6062 "daily_credits" : self ._daily_credits ,
6163 "last_date" : self ._last_date ,
62- "last_updated" : datetime . now ().isoformat ()
64+ "last_updated" : get_now_sgt ().isoformat ()
6365 }, f , indent = 2 )
6466
6567 @property
6668 def daily_credits_used (self ) -> int :
6769 """Get the number of credits used today."""
6870 with self ._lock :
6971 # Check if we need to reset for a new day
70- if self ._last_date != str (date .today ()):
72+ today_sgt = str (get_now_sgt ().date ())
73+ if self ._last_date != today_sgt :
7174 self ._daily_credits = 0
72- self ._last_date = str ( date . today ())
75+ self ._last_date = today_sgt
7376 self ._save_state ()
7477 return self ._daily_credits
7578
@@ -111,9 +114,10 @@ def record_usage(self, credits: int = 1):
111114 """
112115 with self ._lock :
113116 # Check for day rollover
114- if self ._last_date != str (date .today ()):
117+ today_sgt = str (get_now_sgt ().date ())
118+ if self ._last_date != today_sgt :
115119 self ._daily_credits = 0
116- self ._last_date = str ( date . today ())
120+ self ._last_date = today_sgt
117121
118122 self ._daily_credits += credits
119123 self ._minute_calls .append (time .time ())
@@ -143,7 +147,7 @@ def get_status(self) -> Dict[str, Any]:
143147 "daily_limit" : TWELVE_DATA_DAILY_LIMIT ,
144148 "minute_remaining" : self .minute_credits_remaining ,
145149 "minute_limit" : TWELVE_DATA_MINUTE_LIMIT ,
146- "date" : str (date . today ())
150+ "date" : str (get_now_sgt (). date ())
147151 }
148152
149153 def throttle_if_needed (self , credits_needed : int = 1 ) -> bool :
0 commit comments