import pathlib import datetime from typing import Literal from serenitas.utils.env import DAILY_DIR _recipients = { "ISOSEL": ( "luke.treacy@innocap.com", "margincalls@innocapglobal.com", ), "BOWDST": ( "shkumar@sscinc.com", "mbisoye@sscinc.com", "hedgemark.lmcg.ops@sscinc.com", "PRIM-Ops@innocap.com", "Hedgemark.OTC@sscinc.com", ), "SERCGMAST": ( "SERENITAS.FA@sscinc.com", "SERENITAS.ops@sscinc.com", ), "BAML_FCM": ("footc_margin_csr_amrs@bofa.com",), "GS_FCM": ( "Susan.Olesky@ny.email.gs.com", "Divyanshi.Girotra@gs.com", "gs-margin-calls-dcs@ny.email.gs.com", "PRIM-Ops@innocap.com", ), "NYOPS": ("nyops@lmcg.com",), "UMB": ("lmcgcustody@umb.com",), "NY_CREW": ( "fyu@lmcg.com", "ghorel@lmcg.com", "etsui@lmcg.com", ), } _sma_recipients = { "ISOSEL": ( "BCI-Ops@innocap.com", "Vera.Dvorski@innocap.com", "Diana.WuChen@innocap.com", ), "BOWDST": ( "PRIM-Ops@innocap.com", "Vera.Dvorski@innocap.com", "Diana.WuChen@innocap.com", ), "BRINKER": ("CSG.Team.Armata@bbh.com",), } _monthend_nav_recipients = { "BOWDST": _recipients["BOWDST"] + ( "Hedgemark.FA@sscinc.com", "PRIM-Acctg@innocap.com", "catherine.porter@innocap.com", "Meghana.shroff@innocap.com", ), } _settlement_recipients = { "BOWDST": _sma_recipients["BOWDST"], "SERCGMAST": ( "serenitas.otc@sscinc.com", "serenitas.ops@sscinc.com", ), "ISOSEL": ( "derivatives_settlements@citco.com", "bci-ops@innocap.com", "margincalls@innocap.com", ), "BRINKER": ("nyops@lmcg.com",), } _valuation_recipients = { "SERCGMAST": ("Serenitas.Vals@sscinc.com",), "BOWDST": ( "prim.vals@sscinc.com", "AJeeva@sscinc.com", ), "ISOSEL": ("BHu@citco.com", "zzCFSDubPricing2@citco.com"), } _recon_recipients = { "ISOSEL": ( "RGillis@citco.com", "EnzYang@citco.com", "InnocapMO@citco.com", ), "SERCGMAST": ("SERENITAS.ops@sscinc.com",), "BOWDST": ("prim-ops@innocap.com",), } _cc_recipients = { "ISOSEL": ("selene-ops@lmcg.com",), "BOWDST": ("bowdoin-ops@lmcg.com",), "SERCGMAST": ("nyops@lmcg.com",), "BRINKER": ("nyops@lmcg.com",), } _fund_custodians = { "SERCGMAST": ("UMB",), "ISOSEL": ( "NT", "SCOTIA", ), "BOWDST": ("BNY",), } Custodian = Literal["UMB", "NT", "BNY", "SCOTIA"] def get_dir( workdate: datetime.date = datetime.date.today(), archived=True ) -> pathlib.Path: p = DAILY_DIR / str(workdate) / "Reports" if not p.exists() and archived: p = ( DAILY_DIR / str(workdate.year) / f"{workdate:%Y_%m}" / str(workdate) / "Reports" ) return p def dt_from_fname(f, dt_format="%Y%m%d%H%M"): return datetime.datetime.strptime( f.name.removesuffix(".csv").removesuffix(".xlsx").rsplit("_")[-1], dt_format ) def dt_from_citco(filename, file_tag, dt_format): return datetime.datetime.strptime( filename.removesuffix(".csv").removeprefix(file_tag), dt_format )