<#3457 [BUG] Defining tasks using imported functi...
# flytekit
c
#3457 [BUG] Defining tasks using imported functions raises AttributeError: 'function' object has no attribute 'name' Issue created by taeefnajib ### Describe the bug I was using Flyte v1.2.7 on a project that predicts glass type using sklearn's KNeighborsClassifier This is a remote execution via flyte REST API. Here's the workflow code: import sklearn import os import sys import typing from flytekit import Resources, task, workflow from main import Hyperparameters from main import generate_dataset from main import train_model generate_dataset_task=task(requests=Resources(cpu="1"),limits=Resources(cpu="1"),retries=3)(generate_dataset) train_model_task=task(requests=Resources(cpu="1"),limits=Resources(cpu="1"),retries=3)(train_model) _wf_outputs=typing.NamedTuple("WfOutputs",train_model_0=sklearn.ensemble._forest.RandomForestClassifier) @workflow def my_workflow_3(_wf_args:Hyperparameters)->_wf_outputs: generate_dataset_o0_,generate_dataset_o1_,generate_dataset_o2_,generate_dataset_o3_=generate_dataset_task(hp=_wf_args) train_model_o0_=train_model_task(hp=_wf_args,X_train=generate_dataset_o0_,y_train=generate_dataset_o2_) return _wf_outputs(train_model_o0_) And the contents of `main.py`: # Import necessary libraries import typing from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score import numpy as np from dataclasses import dataclass from dataclasses_json import dataclass_json @dataclass_json @dataclass class Hyperparameters(object): n_samples: int = 1000 n_features: int = 20 n_informative: int = 15 n_classes: int = 2 test_size: float = 0.2 n_estimator: int = 100 # Generate the dataset def generate_dataset(hp: Hyperparameters) -> typing.Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: X, y = make_classification(n_samples=hp.n_samples, n_features=hp.n_features, n_informative=hp.n_informative, n_classes=hp.n_classes) return train_test_split(X, y, test_size=hp.test_size) # Train a random forest classifier on the train data def train_model(hp: Hyperparameters, X_train: np.ndarray, y_train: np.ndarray) -> RandomForestClassifier: return RandomForestClassifier(hp.n_estimator).fit(X_train, y_train) I tried v1.4.1 but it throws this error (in both v1.2.7 and v1.4.1):
Copy code
Traceback (most recent call last):
  File "/opt/venv/bin/pyflyte-execute", line 8, in <module>
    sys.exit(execute_task_cmd())
  File "/opt/venv/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/opt/venv/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/opt/venv/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/opt/venv/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/opt/venv/lib/python3.10/site-packages/flytekit/bin/entrypoint.py", line 476, in execute_task_cmd
    _execute_task(
  File "/opt/venv/lib/python3.10/site-packages/flytekit/exceptions/scopes.py", line 160, in system_entry_point
    return wrapped(*args, **kwargs)
  File "/opt/venv/lib/python3.10/site-packages/flytekit/bin/entrypoint.py", line 354, in _execute_task
    _handle_annotated_task(ctx, _task_def, inputs, output_prefix)
  File "/opt/venv/lib/python3.10/site-packages/flytekit/bin/entrypoint.py", line 297, in _handle_annotated_task
    _dispatch_execute(ctx, task_def, inputs, output_prefix)
  File "/opt/venv/lib/python3.10/site-packages/flytekit/bin/entrypoint.py", line 80, in _dispatch_execute
    logger.debug(f"Starting _dispatch_execute for {task_def.name}")
AttributeError: 'function' object has no attribute 'name'
### Expected behavior Both the packaging/registration and execution process succeeds without issues. ### Additional context to reproduce No response ### Screenshots No response ### Are you sure this issue hasn't been raised already? • Yes ### Have you read the Code of Conduct? • Yes flyteorg/flyte