def get_calendar(self, start_date: dt.date = None, end_date: dt.date = None) -> RiskModelCalendar: """ Get risk model calendar for existing risk model between start and end date :param start_date: list returned including and after start_date :param end_date: list returned up to and including end_date """ calendar = GsRiskModelApi.get_risk_model_calendar(self.id) if not start_date and not end_date: return calendar start_idx = get_closest_date_index(start_date, calendar.business_dates, 'after') if start_date else 0 end_idx = get_closest_date_index(end_date, calendar.business_dates, 'before') if end_date else len( calendar.business_dates) return RiskModelCalendar(calendar.business_dates[start_idx:end_idx + 1])
def test_get_risk_model_calendar(mocker): calendar = RiskModelCalendar.from_dict( {"businessDates": ["2020-01-01", "2020-11-01"]}) # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=calendar) # run test response = GsRiskModelApi.get_risk_model_calendar('id') GsSession.current._get.assert_called_with( '/risk/models/{id}/calendar'.format(id='id'), cls=RiskModelCalendar) assert response == calendar
def get_calendar(self) -> RiskModelCalendar: """ Retrieve risk model calendar for existing risk model """ return GsRiskModelApi.get_risk_model_calendar(self.model.id)