@@ -67,7 +67,7 @@ class DateQuarter:
6767 _year = 0
6868 _quarter = 0
6969
70- def __init__ (self , year : int , quarter : int ):
70+ def __init__ (self , year , quarter ):
7171 year = year + (quarter - 1 ) // 4
7272 quarter = (quarter - 1 ) % 4 + 1
7373
@@ -187,25 +187,29 @@ def __sub__(self, other):
187187 else :
188188 raise ArithmeticError ()
189189
190+ @property
190191 def year (self ):
191192 return self ._year
192193
194+ @property
193195 def quarter (self ):
194196 return self ._quarter
195197
196198 def days (self ):
197- start = self .start_date ()
198- end = self .end_date ()
199+ start = self .start_date
200+ end = self .end_date
199201 curr = start
200202 while curr <= end :
201203 yield curr
202204 curr = curr + datetime .timedelta (days = 1 )
203205
206+ @property
204207 def start_date (self ):
205208 return datetime .date (year = self ._year , month = (self ._quarter - 1 )* 3 + 1 , day = 1 )
206209
210+ @property
207211 def end_date (self ):
208- return (self + 1 ).start_date () - datetime .timedelta (days = 1 )
212+ return (self + 1 ).start_date - datetime .timedelta (days = 1 )
209213
210214 @classmethod
211215 def between (cls , start , end , include_last = False ):
@@ -408,11 +412,18 @@ def isomonth(self, time_str):
408412 date_str = self .date (year , month , 1 )
409413 return date_str [0 :- 3 ]
410414
415+ def quarter_from_yq (self , year , quarter ):
416+ return DateQuarter (year , quarter )
417+
418+ def quarter_from_ym (self , year , month ):
419+ dt = self .date (year , month , 1 )
420+ return self .to_quarter (dt )
421+
411422 def to_quarter (self , time_str ):
412423 dt_obj , _ = _str2datetime (time_str )
413424 return DateQuarter .from_date (dt_obj )
414425
415- def between_quarter (self , time_start , time_end , include_last = False ):
426+ def quarters_within (self , time_start , time_end , include_last = False ):
416427 q_start = self .to_quarter (time_start )
417428 q_end = self .to_quarter (time_end )
418429 return DateQuarter .between (q_start , q_end , include_last = include_last )
0 commit comments