Skip to content

Order of produced results is not deterministic  #4

Description

@HadiKutabi
  • CLS-Luigi Version: 0.1.0
  • Python Version: 3.11.7
  • Operating System: Ubuntu 22.04.3 LTS

Description

I've noticed that the order of the results is different everytime I inhabit. Below is my script.
You can see how the order is different in the outout section.

What I Did

from cls_luigi.inhabitation_task import RepoMeta, LuigiCombinator, ClsParameter
from cls.fcl import FiniteCombinatoryLogic
from cls.subtypes import Subtypes
import luigi


class FirstTask(luigi.Task, LuigiCombinator):
    abstract = False


class AbstractTask(luigi.Task, LuigiCombinator):
    abstract = True
    first_task = ClsParameter(tpe=FirstTask.return_type())


class ConcreteTask1(AbstractTask):
    abstract = False


class ConcreteTask2(AbstractTask):
    abstract = False


class ConcreteTask3(AbstractTask):
    abstract = False


if __name__ == '__main__':

    for i in range(5):
        target = AbstractTask.return_type()
        repository = RepoMeta.repository

        fcl = FiniteCombinatoryLogic(repository, Subtypes(RepoMeta.subtypes), processes=1)

        inhabitation_result = fcl.inhabit(target)
        max_tasks_when_infinite = 10
        actual = inhabitation_result.size()
        max_results = max_tasks_when_infinite
        if actual > 0:
            max_results = actual

        results = [t() for t in inhabitation_result.evaluated[0:max_results]]
        for r in results:
            print(r)

        print("==========================================================\n")

Output:

/home/hadi/PycharmProjects/cls-luigi/.venv/bin/python /home/hadi/PycharmProjects/cls-luigi/examples/ml_blood_sugar_level/variant_1.py 
ConcreteTask3(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask2(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask1(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
==========================================================

ConcreteTask1(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask2(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask3(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
==========================================================

ConcreteTask1(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask2(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask3(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
==========================================================

ConcreteTask3(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask1(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask2(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
==========================================================

ConcreteTask3(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask1(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
ConcreteTask2(config_index=, first_task={"__type__": "cls_luigi.inhabitation_task.RepoMeta.WrappedTask", "module": "__main__", "task_class": "FirstTask", "arguments": []})
==========================================================


Process finished with exit code 0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions