Beispiel #1
0
class DivNew(base.AbstractTable[events.TradingDayEnded]):
    """Таблица с ожидаемыми дивидендами.

     Данные забираются со https://www.smart-lab.ru по российским акциям и с https://www.moex.com/ по
     иностранным.

    Создает события с новыми дивидендами.
    """

    group: ClassVar[ports.GroupName] = ports.DIV_NEW
    _gateways: Final = (
        smart_lab.SmartLabGateway(),
        moex_status.MOEXStatusGateway(),
    )

    def _update_cond(self, event: events.TradingDayEnded) -> bool:
        """Если торговый день окончился, всегда обновление."""
        return True

    async def _prepare_df(self, event: events.TradingDayEnded) -> pd.DataFrame:
        """Загружает новый DataFrame полностью."""
        dfs = [await gw() for gw in self._gateways]
        return pd.concat(dfs, axis=0)

    def _validate_new_df(self, df_new: pd.DataFrame) -> None:
        """Нет проверок."""

    def _new_events(
            self, event: events.TradingDayEnded) -> list[domain.AbstractEvent]:
        """Порождает команды обновить дивиденды."""
        return []
Beispiel #2
0
async def test_conomy_gateway(mocker, df_patch, df_res):
    """Проверка нижних ячеек и отбрасывание предварительных данных."""
    mocker.patch.object(parser, "get_df_from_url", return_value=df_patch)
    loader = smart_lab.SmartLabGateway()
    pd.testing.assert_frame_equal(await loader.__call__(), df_res)