Pular para conteúdo

execution_with_partida

ExecutionWithPartidaBuilder

Builder base para configuração de execução com partida.

O SDK usa esta abstração para esconder os cards do entrada.txt e permitir que o consumidor configure a intenção de uso de forma direta.

Source code in pldpro_sdk/models/execution_with_partida.py
10
11
12
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
class ExecutionWithPartidaBuilder:
    """
    Builder base para configuração de execução com partida.

    O SDK usa esta abstração para esconder os cards do `entrada.txt`
    e permitir que o consumidor configure a intenção de uso de forma direta.
    """

    def __init__(self) -> None:
        self._use_partida: bool | None = None
        self._monthly_partida: bool | None = None
        self._starting_model: ModeloPartida | str | None = None

    def use_partida(self, enabled: bool) -> "ExecutionWithPartidaBuilder":
        if not isinstance(enabled, bool):
            raise ValueError("use_partida deve ser boolean.")

        self._use_partida = enabled
        return self

    def set_monthly_partida(self, enabled: bool) -> "ExecutionWithPartidaBuilder":
        if not isinstance(enabled, bool):
            raise ValueError("monthly_partida deve ser boolean.")

        self._monthly_partida = enabled
        return self

    def set_starting_model(
        self,
        model: ModeloPartida | str | None,
    ) -> "ExecutionWithPartidaBuilder":
        self._starting_model = model
        return self

    def clear_starting_model(self) -> "ExecutionWithPartidaBuilder":
        self._starting_model = None
        return self

    def build(self) -> ConfiguracaoExecucaoPartidaRequest:
        if self._use_partida is None:
            raise ValueError("use_partida deve ser configurado antes do build().")

        if self._monthly_partida is None:
            raise ValueError("monthly_partida deve ser configurado antes do build().")

        return ConfiguracaoExecucaoPartidaRequest(
            executaPartida="s" if self._use_partida else "n",
            partidaMensal=1 if self._monthly_partida else 0,
            modeloPartida=(
                self._normalize_model(self._starting_model)
                if self._use_partida
                else None
            ),
        )

    def _normalize_model(self, model: ModeloPartida | str | None) -> ModeloPartida | None:
        if model is None:
            return None

        if isinstance(model, ModeloPartida):
            return model

        try:
            return ModeloPartida(str(model).strip().upper())
        except ValueError:
            raise ValueError("starting_model deve ser GV, NW ou DC.")