cuddly-jelly-27016
06/01/2025, 12:12 AMcontainer_image
property produces an error:
couldn't parse image reference "{{.images.default.fqn}}:{{.images.default.tag}}": invalid reference format
This particular error message is returned from Kubernetes when attempting to run the container for the task.
My config is as follows:
SQLAlchemyTask(
"example.hello_mssql.sql_task",
query_template="""
SELECT @@version version
""",
container_image="{{.images.default.fqn}}:{{.images.default.tag}}",
output_schema_type=DataSchema,
task_config=SQLAlchemyConfig(
...
),
secret_requests=[*secrets.values()],
)
### Goal: What should the final outcome look like, ideally?
The above config should work; as per the current `get_registerable_container_image` logic
### Describe alternatives you've considered
Right now this must be hard-coded
### Propose: Link/Inline OR Additional context
This needs to be wrapped in get_registerable_container_image
(see slack messages).
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/03/2025, 6:11 PMcuddly-jelly-27016
06/05/2025, 7:05 PMcuddly-jelly-27016
06/05/2025, 9:39 PMcuddly-jelly-27016
06/05/2025, 10:18 PMcuddly-jelly-27016
06/10/2025, 4:13 PMpyflyte run
and pyflyte register
by @redartera in #3229
• add FlyteRemote.deactivate_launchplan by @cosmicBboy in #3264
• Fix airflow tests by @pingsutw in #3262
• [BUG] KeyError: 'sparkConf' occurs when running a Databricks task without spark_conf by @machichima in #3263
• Bump jinja2 from 3.1.4 to 3.1.6 in /plugins/flytekit-airflow by @dependabot in #3258
Full Changelog: v1.16.0...v1.16.1
flyteorg/flytekitcuddly-jelly-27016
06/11/2025, 12:09 AMfrom flytekit.experimental import eager
from flytekit.types.directory import FlyteDirectory
from flytekit.remote.remote import Config, FlyteRemote
remote = FlyteRemote(
config=Config.auto(config_file="config.yaml"),
default_project="project_name",
default_domain="development",
)
remote_workflow = remote.fetch_launch_plan(
project="project_name", name="workflow_name", version="version_number"
)
@eager(remote=remote)
async def toy_example(directories: FlyteDirectory) -> bool:
result = await remote_workflow(directories=[directories])
return 0
More concisely, a new class e.g. import_launchplan
could be used inside of the eager workflow and inherit it's remote definition to fetch things:
result = await import_launchplan('lp_name')(directories=[directories])
And be executable with:
pyflyte --config config.yaml run --project project_name toy_example.py toy_example --directories ./
which currently return: Remotely fetched entities cannot be run locally. Please mock the workflows.remote_workflow.execute.
### Describe alternatives you've considered
It's possible to use pyflyte run --remote
followed by pyflyte fetch
to get the assets back locally, but that's a more manual process.
It would also be possible to define everything in a remote context within a python script, including the fetch, but that's developing further away from production.
### Propose: Link/Inline OR Additional context
Could be related to: #4570
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytealert-oil-1341
06/11/2025, 9:45 PMcuddly-jelly-27016
06/13/2025, 12:10 AMFlyteRemote
with the fetch_workflow_execution
function we can correctly retrieve most of the information related to a workflow execution (i.e. version, closure information). However, when we try to access the inputs and output from here the result is a None
, despite knowing/seeing that the execution has inputs & outputs in the Flyte Console.
### Expected behavior
I would expect that when I call .inputs
or .outputs
on a FlyteWorkflowExecution
it would Returns the inputs to the execution in the standard python format as dictated by the type engine.
(taken from docstring) as opposed to returning a None
when inputs and outputs are actually set for the specific workflow execution. For cases when no inputs or outputs are set perhaps an empty dict would make more sense here as well.
### Additional context to reproduce
remote = FlyteRemote(flyte_admin_url=_FLYTE_HOST, insecure=False)
execution = remote.fetch_workflow_execution(project=_PROJECT_NAME, domain=_PROJECT_DOMAIN, name=_EXECUTION_NAME)
print(execution.inputs) # prints None
### Screenshots
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/13/2025, 12:10 AMIn [5]: r.sync_execution(ex, sync_nodes=True)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-5-cc8f74e15715> in <cell line: 1>()
----> 1 r.sync_execution(ex, sync_nodes=True)
~/go/src/github.com/flyteorg/flytekit/flytekit/remote/remote.py in sync_execution(self, execution, entity_definition, sync_nodes)
1478 node_execs = {}
1479 for n in underlying_node_executions:
-> 1480 node_execs[n.id.node_id] = self.sync_node_execution(n, node_mapping) # noqa
1481 execution._node_executions = node_execs
1482 return self._assign_inputs_and_outputs(execution, execution_data, node_interface)
~/go/src/github.com/flyteorg/flytekit/flytekit/remote/remote.py in sync_node_execution(self, execution, node_mapping)
1620 for t in iterate_task_executions(self.client, execution.id)
1621 ]
-> 1622 execution._interface = execution._node.flyte_entity.interface
1623
1624 self._assign_inputs_and_outputs(
AttributeError: 'FlyteGateNode' object has no attribute 'interface'
### Expected behavior
should not error.
### 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/flytecuddly-jelly-27016
06/13/2025, 12:10 AMFlyteRemote.sync_execution()
(and other methods that rely on it, e.g. FlyteRemote.wait()
and FlyteRemote.execute()
with wait=True) occasionally fails with
AttributeError: 'FlyteBranchNode' object has no attribute 'interface'
The offending line is remote.py#L1644 (I pasted full stack trace in the "Sreenshots" below).
The error only happens while the task is running (and is some specific state). Seems to happen for us mostly when the tasks inside of the conditional take some time to schedule (e.g. tasks with resource requirements that trigger cluster scale-up).
This pretty much renders wait()
unusable for us, we had do our own wait wrapper that has a try..except around the sync_execution
to handle this case.
### Expected behavior
It shuold not raise? ;)
### Additional context to reproduce
No response
### Screenshots
Stack trace:
AttributeError Traceback (most recent call last)
Cell In[9], line 3
----> 3 flyte.sync_execution(ex, sync_nodes=True)
File [~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1503](<https://file>+.<http://vscode-resource.vscode-cdn.net/Users/tomasz/projects/workflows/demos/~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1503|vscode-resource.vscode-cdn.net/Users/tomasz/projects/workflows/demos/~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1503>), in FlyteRemote.sync_execution(self, execution, entity_definition, sync_nodes)
1501 node_execs = {}
1502 for n in underlying_node_executions:
-> 1503 node_execs[n.id.node_id] = self.sync_node_execution(n, node_mapping) # noqa
1504 execution._node_executions = node_execs
1505 return self._assign_inputs_and_outputs(execution, execution_data, node_interface)
File [~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1645](<https://file>+.<http://vscode-resource.vscode-cdn.net/Users/tomasz/projects/workflows/demos/~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1645|vscode-resource.vscode-cdn.net/Users/tomasz/projects/workflows/demos/~/Library/Caches/pypoetry/virtualenvs/platform-QGRyQAM2-py3.10/lib/python3.10/site-packages/flytekit/remote/remote.py:1645>), in FlyteRemote.sync_node_execution(self, execution, node_mapping)
1639 # This is the plain ol' task execution case
1640 else:
1641 execution._task_executions = [
1642 self.sync_task_execution(FlyteTaskExecution.promote_from_model(t))
1643 for t in iterate_task_executions(self.client, execution.id)
1644 ]
-> 1645 execution._interface = execution._node.flyte_entity.interface
1647 self._assign_inputs_and_outputs(
1648 execution,
1649 node_execution_get_data_response,
1650 execution.interface,
1651 )
1653 return execution
AttributeError: 'FlyteBranchNode' object has no attribute 'interface'
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/14/2025, 12:09 AMpyflyte run remote-task
(and remote-workflow
and remote-launchplan
):
$ pyflyte run remote-task example.example_task --no-flag
TypeTransformerFailedError: Python value cannot be None, expected <class 'bool'>/Flyte Serialized object (LiteralType):
simple: 4
I'm using flytekit 1.15.0
### Expected behavior
It should be possible to set boolean parameters to False using pyflyte run remote-task
. It should work the same as pyflyte run --remote
.
### Additional context to reproduce
example.py
from flytekit import task
@task()
def example_task(flag: bool) -> bool:
return flag
Works
pyflyte run --remote example.py example_task --flag
pyflyte run --remote example.py example_task --no-flag
pyflyte run remote-task example.example_task --flag
Fails
pyflyte run remote-task example.example_task --no-flag
### Screenshots
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/19/2025, 12:10 AMcuddly-jelly-27016
06/23/2025, 12:10 AMpyflyte register --non-fast
or pyflyte package
+ flytectl register
)
That's because flytekit won't download the task code in non-fast mode, and expect the user code to be inside the image.
@task()
def t1():
print("hello world")
### Goal: What should the final outcome look like, ideally?
Change the default image (`cr.flyte.org/flyteorg/flytekit:py3.8-latest`) to ImageSpec(base_image=<http://cr.flyte.org/flyteorg/flytekit:py3.8-latest|cr.flyte.org/flyteorg/flytekit:py3.8-latest>)
, so flytekit will build the image at compile time, and copy the user code into the image.
https://github.com/flyteorg/flytekit/blob/1bb50675b4a64bb6318813c9a9ddda77ebbcbb47/flytekit/configuration/default_images.py#L16-L27
### Describe alternatives you've considered
Raise an exception at compile time when container_name
is None in non-fast mode
### Propose: Link/Inline OR Additional context
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/23/2025, 8:40 PMcuddly-jelly-27016
06/30/2025, 12:11 AMInitError: Failed to create the collection: Prompt dismissed..
KeyringLocked: Failed to unlock the collection!
### Expected behavior
I'm not trying to use any authentication so I would expect it to ignore any exceptions about the system keyring. Alternatively we could add AuthType.NONE
so that all keyvault related code can be avoided.
### Additional context to reproduce
On my system I can reproduce with:
from flytekit.configuration import Config
from flytekit.remote import FlyteRemote
config = Config.for_sandbox()
remote = FlyteRemote(config=config)
remote.client
This is SSHing from one linux system to another linux system. Both are used with a Desktop setup so they probably have the GNOME keyring installed.
I tried using all the different Auth types but they all failed for one reason or another (this is largely expected because we do not have any authentication configured on our flyte deployment).
Full stack trace:
stack_trace.txt
### Screenshots
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/30/2025, 12:11 AMFlyteFile
from a remote url. This is supported but counter intuitive (FlyteFile(path="s3://....", remote=False)
)
3. FlyteDirectory.crawl()
should yield `FlyteFile`s and they should have metadata
4. FlyteDirectory.crawl(details=True)
returns a list of tuples (file_base, {file_path: dict})
a dict of one item is useless in my opinion. It should return (file_base, (file_path, dict))
instead... but we should return FlyteFiles anyway and have materialized metadata on FlyteFiles.. maybe something like (file_base, (file_path, FlyteFile))
5. FlyteFile.download()
downloads files in random locations. I think these should be under the working directory by default (maybe in randomly generated folder names)... and I think it should allow you to download to a specific location... right now I've to open(my target)
and write to it
### Describe alternatives you've considered
Reimplement these at the task level.
### Propose: Link/Inline OR Additional context
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
06/30/2025, 8:48 PMImageSpec
build by DefaultBuilder
by @amitani in #3284
• Fix launch plan CLI registration by @pingsutw in #3285
## New Contributors
• @Ziemin made their first contribution in #3277
Full Changelog: v1.16.1...v1.16.2b0
flyteorg/flytekitcuddly-jelly-27016
07/05/2025, 11:28 PM.gitignore
, .dockerignore
, .flyteignore
. I propose adding a .flyteinclude
that allows users to explicitly state which files they want to include.
### Goal: What should the final outcome look like, ideally?
Add .flyteinclude
that lists out files or globs of files to include.
### Describe alternatives you've considered
Do not add .flyteinclude
.
### Propose: Link/Inline OR Additional context
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
07/07/2025, 8:31 PMearly-napkin-90297
07/11/2025, 9:40 PMmicromamba
dependency. flytekit-uv is a flytekit
plugin implementing a pure uv
builder for ImageSpec. I'm wondering if it would be more broadly useful, and whether there might be interest for adding it to the official plugins, perhaps with a more complete set of features.cuddly-jelly-27016
07/15/2025, 4:07 AM@reference_task(
project="myproj",
domain="development",
name="workflow.test",
version="123456789",
)
def reftask(test: str) ->str:
...
the version keyword is required. To be able to get the latest version you need to fetch it using FlyteRemote. This adds complexity if you are using authentication or CICD.
It would simplify reference tasks to be able to leave the version keyword our in which case the latest version is used. if the user wants to explicitly specify the version they can.
### Provide a possible output or UX example
@reference_task(
project="myproj",
domain="development",
name="workflow.test",
)
def reftask(test: str) ->str:
...
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
07/16/2025, 5:54 PMImageSpec
build by DefaultBuilder
by @amitani in #3284
• Fix launch plan CLI registration by @pingsutw in #3285
• Version hash should include the image from launchPlan.workflow.nodes by @pingsutw in #3290
• Specify pandas version for Python 3.9 for deck plugin by @pingsutw in #3289
• Fix click option parameter declaration to remove short flag conflict by @pingsutw in #3286
• sort input bound by @pingsutw in #3292
• add L40S, H100, H200 to pre-defined accelerators by @cosmicBboy in #3293
• fix name of nvidia H100/H200 accelerators by @cosmicBboy in #3295
• add ephemeral storage param to nim by @samhita-alla in #3291
• [BUG] Local testing using optional dicts with optional values does not work by @machichima in #3294
• image builder: give flytekit user ownership of /root after venv is cr… by @cosmicBboy in #3298
## New Contributors
• @Ziemin made their first contribution in #3277
Full Changelog: v1.16.1...v1.16.2
flyteorg/flytekitcuddly-jelly-27016
07/17/2025, 6:55 PMcuddly-jelly-27016
07/19/2025, 12:10 AMisinstance() argument 2 cannot be a parameterized generic
that's mentioned in docs for standard types.
### Propose: Link/Inline OR Additional context
The usage of isinstance is currently coming from the assert_type
call in the type engine. Kinda worked around that in here https://github.com/flyteorg/flytekit/pull/2743/files and got the trivial case above working but additional tests and more complex cases need to be considered.
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
07/29/2025, 11:05 AMcuddly-jelly-27016
07/30/2025, 9:59 PMcuddly-jelly-27016
08/01/2025, 12:12 AMexec = remote.fetch_execution(project, domain, execution_name)
Retrieve the ID of the dynamic node execution:
dynamic_node_exec_id = remote.client.list_node_executions(exec.id)[0][3].id
Obtain the ID of the dynamic task execution:
dynamic_task_id = remote.client.list_task_executions_paginated(dynamic_node_exec_id)[0][0].id
Attempt to list node executions for the task, but I get an empty list:
spawned_nodes = remote.client.list_node_executions_for_task_paginated(dynamic_task_id)
### Expected behavior
Since I have got the task execution of a dynamic workflow, applying the list_node_executions_for_task_paginated should return its node executions in a list according to the documentation of FlyteRemote.
### Additional context to reproduce
No response
### Screenshots
[image](https://private-user-images.githubusercontent.com/84456950/300404057-14ac482b-aef7-407e-9ecb-a306982e4b54.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTQ2OTg0ODAsIm5iZiI6MTc1NDY5ODE4MCwicGF0aCI6Ii84NDQ1Njk1MC8zMDA0MDQwNTctMTRhYzQ4MmItYWVmNy00MDdlLTllY2ItYTMwNjk4MmU0YjU0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA4MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwODA5VDAwMDk0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2YTVkNGQzNzYzMzlmMjc2YzNkODRkZjRhNzYyYzIwMWY3ODZjZmI3MzVjZDBhYzA3YzhjOGUyMjA2NjBkYjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.BqgRPDxeRSiILUvR6gT6iY2QEAeli-oK8Z_NFwcyFME)
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flytecuddly-jelly-27016
08/05/2025, 12:11 AMcuddly-jelly-27016
08/09/2025, 1:42 AMmap_task
within a task
function body
@task
def t1():
map_task(...)(...)
• When a user tries to define a map_task
at the module-level scope
@map_task
@task
def t1(): ...
or
@task
def t1(): ...
my_map_task = map_task()(t1)
### Goal: What should the final outcome look like, ideally?
The error should make it clear that `map_task`s can only be defined in workflow function bodies.
### Describe alternatives you've considered
NA
### Propose: Link/Inline OR Additional context
No response
### Are you sure this issue hasn't been raised already?
• Yes
### Have you read the Code of Conduct?
• Yes
flyteorg/flyte