Dotan Asselmann
12/10/2020, 7:37 AMMarwan Sarieddine
12/10/2020, 1:27 PMimport random
from prefect import task, Parameter, Flow
@task(name="Task A")
def task_a(x):
    x = x or prefect.context.get("x")
    return x + 2
with Flow("test") as flow:
    x = Parameter("x", default=None)
    task_a(x)Zanie
Dotan Asselmann
12/11/2020, 6:38 PMPedro Machado
12/12/2020, 12:31 AMParameterMatt Drago
12/13/2020, 10:01 PMContextDefaultParameterContextDefaultDateTimeParameterPedro Machado
12/13/2020, 10:12 PMMatt Drago
12/13/2020, 10:12 PMclass ContextDefaultParameter(Parameter):
    def __init__(
        self,
        name: str,
        context_name: str,
        tags: Iterable[str] = None,
    ) -> None:
        super().__init__(name=name, required=False, tags=tags)
        self.context_name = context_name
    def run(self) -> Any:
        value = super().run()
        if value is None:
            value = prefect.context[self.context_name]
        return valueMatt Drago
12/13/2020, 10:13 PMMatt Drago
12/13/2020, 10:14 PMPedro Machado
12/13/2020, 10:14 PMgetMatt Drago
12/13/2020, 10:16 PMgetgetPedro Machado
12/13/2020, 10:21 PMclass ParameterWithDynamicDefault(Parameter):
    def __init__(
        self,
        name: str,
        required: bool = True,
        default_callable: Callable[[], JSONSerializableParameterValue] = None,
        tags: Iterable[str] = None,
    ) -> None:
        if default_callable and not callable(default_callable):
            raise ValueError(
                f"default_callable must be a callable. Got {type(default_callable)} instead."
            )
        self.default_callable = default_callable
        required = False if self.default_callable else required
        super().__init__(name, required=required, tags=tags)
    def run(self) -> Any:
        value = super().run()
        if value is None:
            value = self.default_callable()
        return valueMatt Drago
12/13/2020, 10:35 PMMatt Drago
12/13/2020, 10:39 PMPedro Machado
12/14/2020, 12:51 AMMatt Drago
12/14/2020, 12:53 AMMatt Drago
12/14/2020, 12:53 AMextract_date = ContextDefaultDateTimeParameter(name="extract_date", context_name="scheduled_start_time")Pedro Machado
12/14/2020, 1:01 AMParametertargetlocationMatt Drago
12/14/2020, 1:02 AM