https://flyte.org logo
#ask-the-community
Title
# ask-the-community
c

Chandrashekhar Kotekar

01/25/2024, 8:48 AM
Hi, We have many Flyte tasks with same, repeatative configurations like shown below.
Copy code
@task(
    cache=False if os.environ.get("ENVIRONMENT") == "test" else True,
    cache_serialize=False if os.environ.get("ENVIRONMENT") == "test" else True,
    cache_version="1.0",
    retries=3,
)
def my_awesome_task(common_input_1: str, common_input_2: str) -> str:
    # my magical task code which returns a string
We have at least 10 such tasks. While all the tasks are working fine, is there any way to avoid this repeatative / boiler plate code and pass same config to each task? Using
@wrapper
decoration won't help here. Any idea how we can reduce this boilerplate code? or - have I written tasks in wrong way?
j

Jake Dodd

01/25/2024, 9:27 AM
You can write the config to a dict and unpack it in the decorator:
Copy code
task_config = {
    "cache": False if os.environ.get("ENVIRONMENT") == "test" else True,
     "cache_serialize": False if os.environ.get("ENVIRONMENT") == "test" else True,
     "cache_version": "1.0",
     "retries": 3,
}

@task(**task_config)
def func(input_1: str) -> str:
    ...
c

Chandrashekhar Kotekar

01/25/2024, 9:35 AM
That's wonderful. Thank you so much !!
k

Ketan (kumare3)

01/25/2024, 4:21 PM
Or write your own meta wrapper
c

Chandrashekhar Kotekar

01/25/2024, 9:43 PM
Answer by @Jake Dodd helped me to reduce "some" boilerplate code but I would like to reduce some more repeatative code. @Ketan (kumare3) thanks for help. Writing a meta wrapper sounds interesting. how do I get started with writing a meta wrapper? Is there any doc you can point me to?
k

Ketan (kumare3)

01/25/2024, 10:13 PM
thats just a function right
like
Copy code
def my_task(... limited):
    bind_vals ...
    return functools.partial(task, bind_vals...)