created decorator function, yet to be implemented
This commit is contained in:
parent
ad68dcd930
commit
00ac66219b
@ -43,6 +43,23 @@ class _IndexSlicer:
|
|||||||
return item
|
return item
|
||||||
|
|
||||||
|
|
||||||
|
def date_parser(*params):
|
||||||
|
def parse_dates(func):
|
||||||
|
def wrapper_func(*args, **kwargs):
|
||||||
|
date_format = kwargs.get('date_format', None)
|
||||||
|
|
||||||
|
for i, j in enumerate(params):
|
||||||
|
date = kwargs.get(j, None)
|
||||||
|
if date is None:
|
||||||
|
date = args[i+1]
|
||||||
|
|
||||||
|
parsed_date = _parse_date(date, date_format)
|
||||||
|
kwargs[j] = parsed_date
|
||||||
|
return func(**kwargs)
|
||||||
|
return wrapper_func
|
||||||
|
return parse_dates
|
||||||
|
|
||||||
|
|
||||||
class Series(UserList):
|
class Series(UserList):
|
||||||
"""Container for a series of objects, all objects must be of the same type"""
|
"""Container for a series of objects, all objects must be of the same type"""
|
||||||
|
|
||||||
@ -157,7 +174,7 @@ class TimeSeriesCore(UserDict):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self, data: List[Iterable], frequency: Literal["D", "W", "M", "Q", "H", "Y"], date_format: str = "%Y-%m-%d"
|
self, data: List[Iterable], frequency: Literal["D", "W", "M", "Q", "H", "Y"], date_format: str = "%Y-%m-%d"
|
||||||
):
|
):
|
||||||
"""Instantiate a TimeSeries object
|
"""Instantiate a TimeSeriesCore object
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
@ -5,7 +5,7 @@ from typing import Iterable, List, Literal, Mapping, Union
|
|||||||
|
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
|
||||||
from .core import AllFrequencies, TimeSeriesCore
|
from .core import AllFrequencies, TimeSeriesCore, date_parser
|
||||||
from .utils import (
|
from .utils import (
|
||||||
_find_closest_date,
|
_find_closest_date,
|
||||||
_interval_to_years,
|
_interval_to_years,
|
||||||
@ -184,6 +184,7 @@ class TimeSeries(TimeSeriesCore):
|
|||||||
|
|
||||||
return self.__class__(new_ts, frequency=self.frequency.symbol)
|
return self.__class__(new_ts, frequency=self.frequency.symbol)
|
||||||
|
|
||||||
|
# @date_parser('as_on')
|
||||||
def calculate_returns(
|
def calculate_returns(
|
||||||
self,
|
self,
|
||||||
as_on: Union[str, datetime.datetime],
|
as_on: Union[str, datetime.datetime],
|
||||||
@ -276,6 +277,7 @@ class TimeSeries(TimeSeriesCore):
|
|||||||
returns = returns ** (1 / years)
|
returns = returns ** (1 / years)
|
||||||
return (current[0] if return_actual_date else as_on), returns - 1
|
return (current[0] if return_actual_date else as_on), returns - 1
|
||||||
|
|
||||||
|
# @date_parser('from_date', 'to_date')
|
||||||
def calculate_rolling_returns(
|
def calculate_rolling_returns(
|
||||||
self,
|
self,
|
||||||
from_date: Union[datetime.date, str],
|
from_date: Union[datetime.date, str],
|
||||||
|
Loading…
Reference in New Issue
Block a user