numerous-hamburger-7178
10/31/2022, 4:11 PMUnion[str, flytekit.types.directory.FlyteDirectory]
. Trying to create a task that could take in a str or a flytedirectory but I get
raise ValueError(f"Expected a directory. {source_path} is not a directory")
ValueError: Expected a directory. X is not a directory
AssertionError: Failed to Bind variable input for function
freezing-airport-6809
freezing-airport-6809
numerous-hamburger-7178
10/31/2022, 4:15 PMfunc(*args, **kwargs)
inside the decorator might be breaking something?freezing-airport-6809
freezing-airport-6809
numerous-hamburger-7178
10/31/2022, 4:23 PMdef mount(job_type):
def inner(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
numerous-hamburger-7178
10/31/2022, 4:24 PM@wraps
, seems like I need to use partial. I'll play around with itnumerous-hamburger-7178
10/31/2022, 5:09 PMnumerous-hamburger-7178
10/31/2022, 5:09 PMfrom functools import partial, wraps
def validate_output(fn=None, *, floor=0):
@wraps(fn)
def wrapper(*args, **kwargs):
out = fn(*args, **kwargs)
if out <= floor:
raise ValueError(
f"output of task {fn.__name__} must be a positive number, found {out}"
)
return out
if fn is None:
return partial(validate_output, floor=floor)
return wrapper
@task
@validate_output(floor=0)
def test_task(input: Union[str, flytekit.types.directory.FlyteDirectory]) ->int :
print(input)
return 5
if __name__ == "__main__":
result = test_task(
input="some str",
)
numerous-hamburger-7178
10/31/2022, 5:10 PMnumerous-hamburger-7178
10/31/2022, 7:30 PMglamorous-carpet-83516
10/31/2022, 8:06 PMpip install git+<https://github.com/flyteorg/flytekit@flyte_dir_union>
numerous-hamburger-7178
10/31/2022, 8:09 PM