Skip to content

Upload API Customers models

Interface for uploading pricing models data.

APIUploadCustomersModels

Bases: APIUploadInternal

Exposes functions for uploading customers models data to the server.

Source code in src/rmlab/api/upload/parametric/customers.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class APIUploadCustomersModels(APIUploadInternal):
    """Exposes functions for uploading customers models data to the server."""

    async def upload_customers_request_model(
        self,
        scen_id: int,
        content: Union[str, dict],
    ) -> None:
        """Upload to server a parametric model defined in file, modelling how customers request books.

        Args:
            scen_id (int): Scenario ID
            content (str): Request model as file or json dict (require `id` identifier field if the latter)
        """

        await self._upload_parametric_model(
            scen_id,
            parametric_kind=ParametricModelKind.CUSTOMERS,
            kind=CustomersModelKind.REQUEST,
            content=content,
        )

    async def upload_customers_choice_model(
        self,
        scen_id: int,
        content: Union[str, dict],
    ) -> None:
        """Upload to server a parametric model defined in file, modelling how customers choose between competing book offers.

        Args:
            scen_id (int): Scenario ID
            content (str): Request model as file or json dict (require `id` identifier field if the latter)
        """

        await self._upload_parametric_model(
            scen_id,
            parametric_kind=ParametricModelKind.CUSTOMERS,
            kind=CustomersModelKind.CHOICE,
            content=content,
        )

    async def upload_batch_customers_models(
        self,
        scen_id: int,
        *,
        request_models: Optional[List[Union[str, dict]]] = None,
        choice_models: Optional[List[Union[str, dict]]] = None,
    ):
        if request_models is None:
            request_models = list()
        if choice_models is None:
            request_models = list()

        not_found_errors = \
            [FileNotFoundError(fn) for fn in request_models if isinstance(fn, str) and not os.path.exists(fn)] + \
            [FileNotFoundError(fn) for fn in choice_models if isinstance(fn, str) and not os.path.exists(fn)]

        type_errors = \
            [TypeError(cnt) for cnt in request_models if (not isinstance(cnt, dict)) and (not isinstance(cnt, str))] + \
            [TypeError(cnt) for cnt in choice_models if not isinstance(cnt, dict) and (not isinstance(cnt, str))]

        raise_from_list(not_found_errors + type_errors)

        for crm in request_models:

            await self._upload_parametric_model(
                scen_id, ParametricModelKind.CUSTOMERS, CustomersModelKind.REQUEST, crm
            )

        for ccm in choice_models:

            await self._upload_parametric_model(
                scen_id, ParametricModelKind.CUSTOMERS, CustomersModelKind.CHOICE, ccm
            )

upload_customers_choice_model(scen_id, content) async

Upload to server a parametric model defined in file, modelling how customers choose between competing book offers.

Parameters:

NameTypeDescriptionDefault
scen_idint

Scenario ID

required
contentstr

Request model as file or json dict (require id identifier field if the latter)

required
Source code in src/rmlab/api/upload/parametric/customers.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
async def upload_customers_choice_model(
    self,
    scen_id: int,
    content: Union[str, dict],
) -> None:
    """Upload to server a parametric model defined in file, modelling how customers choose between competing book offers.

    Args:
        scen_id (int): Scenario ID
        content (str): Request model as file or json dict (require `id` identifier field if the latter)
    """

    await self._upload_parametric_model(
        scen_id,
        parametric_kind=ParametricModelKind.CUSTOMERS,
        kind=CustomersModelKind.CHOICE,
        content=content,
    )

upload_customers_request_model(scen_id, content) async

Upload to server a parametric model defined in file, modelling how customers request books.

Parameters:

NameTypeDescriptionDefault
scen_idint

Scenario ID

required
contentstr

Request model as file or json dict (require id identifier field if the latter)

required
Source code in src/rmlab/api/upload/parametric/customers.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
async def upload_customers_request_model(
    self,
    scen_id: int,
    content: Union[str, dict],
) -> None:
    """Upload to server a parametric model defined in file, modelling how customers request books.

    Args:
        scen_id (int): Scenario ID
        content (str): Request model as file or json dict (require `id` identifier field if the latter)
    """

    await self._upload_parametric_model(
        scen_id,
        parametric_kind=ParametricModelKind.CUSTOMERS,
        kind=CustomersModelKind.REQUEST,
        content=content,
    )