Example #1
0
    def success(result):
        df = lpt.to_df(
            result,
            ["identifier_type", "is_unique_identifier_type", "property_key"])
        df.columns = ["Id", "Unique", "Key"]

        return lpt.trim_df(df, args.limit, sort="Id")
def process_args(api, args):
    def fetch_page(page_token):
        if args.monitor:
            print("Fetching page:", page_token, str(datetime.datetime.now()))
        return api.call.list_portfolios(page=page_token, limit=args.batch)

    def got_page(result):
        if args.portfolios:
            df = lpt.to_df(
                result,
                ["id.scope", "id.code", "is_derived", "type", "parent_portfolio_id"],
            )
            df.columns = ["Scope", "Portfolio", "Derived", "Type", "Parent"]
        else:
            df = (
                pd.DataFrame({"Scopes": [v.id.scope for v in result.content.values]})
                .groupby("Scopes")
                .size()
                .reset_index()
            )
        return df

    df = page_all_results(fetch_page, got_page)

    if not args.portfolios:
        df = df.groupby("Scopes", as_index=False).sum()

    return lpt.trim_df(
        df, args.limit, sort=["Scope", "Portfolio"] if args.portfolios else "Scopes",
    )
def process_args(api, args):

    colmap = {"P:" + p: p[10:] for p in args.properties}

    def fetch_page(page_token):
        return api.call.list_portfolios_for_scope(
            args.scope,
            property_keys=args.properties,
            limit=2000,
            page=page_token)

    def got_page(result):
        return lpt.to_df(
            result.content,
            [
                ID_CODE,
                "display_name",
                "base_currency",
                "description",
                "created",
                "parent_portfolio_id",
            ] + list(colmap.keys()),
        ).rename(columns=colmap)

    return lpt.trim_df(page_all_results(fetch_page, got_page),
                       args.limit,
                       sort=ID_CODE)
Example #4
0
 def success(result):
     if args.portfolios:
         df = lpt.to_df(
             result,
             [
                 "id.scope", "id.code", "is_derived", "type",
                 "parent_portfolio_id"
             ],
         )
         df.columns = ["Scope", "Portfolio", "Derived", "Type", "Parent"]
         return lpt.trim_df(df, args.limit, sort=["Scope", "Portfolio"])
     else:
         df = (pd.DataFrame({
             "Scopes": [v.id.scope for v in result.content.values]
         }).groupby("Scopes").size().reset_index())
         return lpt.trim_df(df, args.limit, sort="Scopes")
 def success(result):
     return lpt.trim_df(
         lpt.to_df(
             result,
             ["scope", "domain", "code", "type", "display_name"],
         ),
         args.limit,
         sort=["scope", "domain", "code"],
     )
    def success(result):
        colmap = {"P:" + p: p[10:] for p in args.properties}
        df = lpt.to_df(
            result.content,
            ["id.code", "display_name", "created", "parent_portfolio_id"] +
            list(colmap.keys()),
        ).rename(columns=colmap)

        return lpt.trim_df(df, args.limit, sort="id.code")
 def list_success(result):
     return lpt.trim_df(
         lpt.to_df(
             result,
             [
                 "effective_at", "unmatched_holding_method",
                 "version.as_at_date"
             ],
         ),
         args.limit,
         sort="effective_at",
     )
Example #8
0
    def success(result):
        def get_value(p):
            return (
                p.key,
                p.value.metric_value.value
                if p.value.metric_value is not None else p.value.label_value,
                p.effective_from,
            )

        df = pd.DataFrame.from_records(
            [get_value(p) for p in result.content.properties.values()],
            columns=["key", "value", "effective_from"],
        )

        return lpt.trim_df(df, args.limit, sort="key")
Example #9
0
 def success(result):
     columns = [
         ("quote_id.effective_at", "Date"),
         ("quote_id.quote_series_id.instrument_id_type", "Instrument Type"),
         ("quote_id.quote_series_id.instrument_id", "Instrument"),
         ("metric_value.value", "Quote"),
         ("metric_value.unit", "Unit"),
         ("quote_id.quote_series_id.quote_type", "Type"),
         ("quote_id.quote_series_id.price_source", "Source"),
         ("quote_id.quote_series_id.provider", "Provider"),
         ("as_at", "AsAt"),
     ]
     df = lpt.to_df(list(result.content.values.values()),
                    [c[0] for c in columns])
     return lpt.trim_df(df.rename(columns=dict(columns)), args.limit)
Example #10
0
def process_args(api, args):
    results = []

    def fetch_page(page_token):
        return api.call.list_portfolios(page=page_token)

    def got_page(result):
        if args.portfolios:
            df = lpt.to_df(
                result,
                [
                    "id.scope", "id.code", "is_derived", "type",
                    "parent_portfolio_id"
                ],
            )
            df.columns = ["Scope", "Portfolio", "Derived", "Type", "Parent"]
        else:
            df = (pd.DataFrame({
                "Scopes": [v.id.scope for v in result.content.values]
            }).groupby("Scopes").size().reset_index())
        results.append(df)

        links = [l for l in result.content.links if l.relation == "NextPage"]

        if len(links) > 0:
            match = rexp.match(links[0].href)
            if match:
                return urllib.parse.unquote(match.group(1))
        return None

    page = Either(None)
    while True:
        page = fetch_page(page.right).bind(got_page)
        if page.is_left():
            return page
        if page.right == None:
            break

    return lpt.trim_df(
        pd.concat(results, ignore_index=True, sort=False),
        args.limit,
        sort=["Scope", "Portfolio"] if args.portfolios else "Scopes",
    )
Example #11
0
    def list_instruments(ids):
        id_columns = {"identifiers.KEY:{}".format(v): v for v in ids["Id"].values}

        def fetch_page(page_token):
            return api.call.list_instruments(
                limit=args.batch,
                page=page_token,
                instrument_property_keys=args.properties,
                filter=args.filter,
            )

        results = []

        def got_page(result):
            columns = ["lusid_instrument_id", "name"]
            columns.extend(sorted(id_columns.keys()))
            columns.extend(f"P:{c}" for c in args.properties)
            df = lpt.to_df(result, columns).dropna(axis=1, how="all")
            df.rename(columns=id_columns, inplace=True)

            results.append(df)

            links = [l for l in result.content.links if l.relation == "NextPage"]

            if len(links) > 0:
                match = rexp.match(links[0].href)
                if match:
                    print("{} {}".format(len(results), match.group(1)))
                    return urllib.parse.unquote(match.group(1))
            return None

        page = Either(None)
        while True:
            page = fetch_page(page.right).bind(got_page)
            if page.is_left():
                return page
            if page.right == None:
                break

        return lpt.trim_df(
            pd.concat(results, ignore_index=True, sort=False), args.limit, sort="name"
        )
        def finished(error=None):

            if error is not None:
                lpt.display_error(error)

            if len(records) == 0:
                print("No results")
                exit(-1)

            df = pd.DataFrame.from_records(records)

            leading_cols = ["#", "Start-Time", "Date", "PV", "Duration", "LUSID", "Id"]

            cols = set(df.columns.values)
            other_cols = list(sorted(cols - set(leading_cols)))

            for col in other_cols:
                df[col] = df[col].fillna(0).astype(int)

            return lpt.trim_df(df[leading_cols + other_cols], args.limit)
Example #13
0
    def success(txns):
        available_columns = [
            ("C", "transaction_status", "Status"),
            ("B", "transaction_id", "TxnId"),
            ("B", "type", "Type"),
            ("B", "P:Instrument/default/Name", "Instrument"),
            ("B", "instrument_uid", "LUID"),
            ("B", "transaction_date", "TradeDate"),
            ("A", "settlement_date", "SettleDate"),
            ("B", "units", "Units"),
            ("A", "transaction_price.price", "Price"),
            ("A", "transaction_currency", "TradeCcy"),
            ("A", "total_consideration.currency", "SettleCcy"),
            ("A", "total_consideration.amount", "SettleAmt"),
            ("A", "exchange_rate", "ExchRate"),
            ("A", "P:Trade/default/TradeToPortfolioRate", "PortRate"),
            ("C", "entry_date_time", "EntryDate"),
            ("C", "cancel_date_time", "CancelDate"),
        ]

        # Pick appropriate set of columns based on arguments

        col_subset = "B" if args.brief else "AB"

        if args.cancels:
            col_subset += "C"

        columns = [c for c in available_columns if c[0] in col_subset]
        columns.extend(
            [
                ("X", "P:" + v, v.replace("Instrument/default/", ""))
                for v in args.properties or []
            ]
        )

        df = lpt.to_df(txns, [c[1] for c in columns])

        # Rename the column headings
        df.columns = [c[2] for c in columns]

        return lpt.trim_df(df, args.limit)
 def get_success(result):
     holdings = [make_holding(adj) for adj in result.content.adjustments]
     df = pd.concat(holdings, ignore_index=True, sort=True)
     return lpt.trim_df(df, args.limit)
Example #15
0
 def success(r):
     df = lpt.to_df(r.content, ["id"])
     return lpt.trim_df(df, args.limit)
Example #16
0
        def success(result):
            (stats, df) = result
            if args.instrument:
                df = df[df[INSTR_COL] == args.instrument]

            return lpt.trim_df(df, args.limit)
Example #17
0
 def success_list_groups(result):
     df = lpt.to_df(result.content,
                    ["id.code", "display_name", "description"])
     return lpt.trim_df(df, args.limit, sort="id.code")
Example #18
0
 def success(r):
     df = lpt.to_df([err[1] for err in r.content.failed.items()],
                    ["id", "detail"])
     df.columns = ["FAILED-INSTRUMENT", "ERROR"]
     return lpt.trim_df(df, args.limit, sort="FAILED-INSTRUMENT")
Example #19
0
 def success_get_group(result):
     df = lpt.to_df(result.content.portfolios, [
         "scope",
         "code",
     ])
     return lpt.trim_df(df, args.limit, sort=["scope", "code"])
    def success(constituents):
        print(constituents.content)
        exit()
        df = lpt.to_df(constituents, [])

        return lpt.trim_df(df, args.limit)