diff --git a/flytekit/bin/entrypoint.py b/flytekit/bin/entrypoint.py index fc9e16014a..252259ecf2 100644 --- a/flytekit/bin/entrypoint.py +++ b/flytekit/bin/entrypoint.py @@ -121,6 +121,11 @@ def _dispatch_execute( input_proto = utils.load_proto_from_file(_literals_pb2.LiteralMap, local_inputs_file) idl_input_literals = _literal_models.LiteralMap.from_flyte_idl(input_proto) + # # TEST DECK + # if task_def is not None and not getattr(task_def, "disable_deck", True): + # _output_deck(task_def.name.split(".")[-1], ctx.user_space_params) + # print("@@@ OUTPUT DECK @@@") + # Step2 # Invoke task - dispatch_execute outputs = task_def.dispatch_execute(ctx, idl_input_literals) diff --git a/flytekit/deck/__init__.py b/flytekit/deck/__init__.py index 58da56cf64..5481493e8f 100644 --- a/flytekit/deck/__init__.py +++ b/flytekit/deck/__init__.py @@ -18,5 +18,5 @@ SourceCodeRenderer """ -from .deck import Deck, DeckField +from .deck import Deck, DeckField, DummyDeck from .renderer import MarkdownRenderer, SourceCodeRenderer, TopFrameRenderer diff --git a/flytekit/deck/deck.py b/flytekit/deck/deck.py index 025306d47b..1db12347d6 100644 --- a/flytekit/deck/deck.py +++ b/flytekit/deck/deck.py @@ -11,6 +11,40 @@ OUTPUT_DIR_JUPYTER_PREFIX = "jupyter" DECK_FILE_NAME = "deck.html" +DUMMY_DECK_HTML = """ + + + + + + Flytekit Status + + + +
+

Flyte decks have not been created yet.

+
+ + +""" class DeckField(str, enum.Enum): @@ -86,6 +120,27 @@ def name(self) -> str: def html(self) -> str: return self._html + @classmethod + def publish(cls): + task_name = FlyteContextManager.current_context().user_space_params.task_id.name + new_user_params = FlyteContextManager.current_context().user_space_params + _output_deck(task_name, new_user_params) + + +class DummyDeck(Deck): + """ + The DummyDeck class is designed + """ + + def __init__(self): + name = "dummy_deck" + html = DUMMY_DECK_HTML + super().__init__(name, html) + + @property + def html(self) -> str: + return self._html + class TimeLineDeck(Deck): """ @@ -154,7 +209,13 @@ def _get_deck( Get flyte deck html string If ignore_jupyter is set to True, then it will return a str even in a jupyter environment. """ - deck_map = {deck.name: deck.html for deck in new_user_params.decks} + + deck_map = {deck.name: deck.html for deck in new_user_params.decks if deck.name != "dummy_deck"} + + # If deck_map is empty after filtering, add DummyDeck + if not deck_map: + deck_map = {"dummy_deck": DUMMY_DECK_HTML} + nav_htmls = [] body_htmls = []