Summary
There's a typo in one of our protobuf fields: funtion_name should be function_name (missing the c). It lives on the ActionMetadata message and flows through the generated code in every language, the Go backend, and the published flyteidl2 package that the Python SDK depends on.
This spans two repos: most of the work is in flyteorg/flyte (Parts 1–3), plus a small follow-up in flyteorg/flyte-sdk (Part 4). It's totally fine to do Part 4 as a second PR — see the note there.
Background
The field is defined here:
flyteidl2/workflow/run_definition.proto (around line 188)
message ActionMetadata {
...
// Function name
string funtion_name = 13; // 👈 typo: "funtion" → "function"
...
}
The = 13 is the field's wire number — we keep it as 13 so this change is fully backward-compatible on the wire. We're only fixing the human-readable name.
What needs to change
1. Fix the proto (the only file you edit by hand for the IDL) — repo: flyteorg/flyte
In flyteidl2/workflow/run_definition.proto:
- string funtion_name = 13;
+ string function_name = 13;
Leave the = 13 and the // Function name comment as-is.
2. Regenerate the code stubs (proto → Go/Python/TypeScript/Rust) — repo: flyteorg/flyte
The files under gen/ are generated — don't edit them by hand. Regenerate them:
This rewrites the generated stubs, including:
gen/go/flyteidl2/workflow/run_definition.pb.go — Go field FuntionName → FunctionName, getter GetFuntionName() → GetFunctionName()
gen/python/flyteidl2/workflow/run_definition_pb2.pyi (+ _pb2.py) — Python attr funtion_name → function_name (this is what gets published as the flyteidl2 package)
gen/ts/flyteidl2/workflow/run_definition_pb.ts — TypeScript funtionName → functionName
gen/rust/src/flyteidl2.workflow.rs — Rust funtion_name → function_name
💡 Don't have the full toolchain (buf/go/uv/cargo) installed? No problem — open your PR with just the proto change, then comment /regen on the PR and CI will regenerate and commit the stubs for you.
3. Fix the backend (Go) references — repo: flyteorg/flyte
Two hand-written spots use the old generated name. In runs/service/run_service.go:
- FuntionName: action.FunctionName,
+ FunctionName: action.FunctionName,
(around line 1534, inside actionMetadataFromModel)
- metadata.FuntionName = action.FunctionName
+ metadata.FunctionName = action.FunctionName
(around line 1832)
Note action.FunctionName (the DB model side) is already spelled correctly — you're only renaming the generated proto symbol on the left.
flyte-sdk doesn't vendor the stubs — it depends on the published flyteidl2 package (see flyteidl2==2.0.x in its pyproject.toml) and imports from flyteidl2.workflow import run_definition_pb2.
So, once the change above is merged and a new flyteidl2 package is released:
- Bump the
flyteidl2== pin in flyte-sdk's pyproject.toml to the version that contains the fix.
- Search the SDK for any reference to the old name and update it:
grep -rn "funtion_name\|funtionName" . # in the flyte-sdk repo
(As of now there are no references, so this is mostly a dependency bump + a sanity grep — but please double-check, since src/flyte/remote/_condition.py imports run_definition_pb2.)
⏳ Ordering: Part 4 depends on a flyteidl2 release, which happens after the flyteorg/flyte PR merges. Open it as a separate follow-up PR against flyte-sdk. If you only want to tackle the flyteorg/flyte side, that's a complete and valuable contribution on its own — just leave a comment so someone can pick up the SDK bump.
How to verify you're done (the flyteorg/flyte side)
# 1. No occurrences of the typo anywhere:
grep -rn "funtion" . | grep -v ".git/" # should print nothing
# 2. Backend compiles:
go build ./runs/...
CI's check-generate job also runs make buf and fails if the generated files weren't updated — so make sure the regenerated gen/ files are committed.
Acceptance criteria
In flyteorg/flyte:
In flyteorg/flyte-sdk (follow-up, after a new flyteidl2 release):
Pointers for first-time contributors
- Contributing guide: see
CONTRIBUTING.md in the repo root.
- The PR template will ask you to pick a changelog label — use changed.
- Stuck on anything? Comment on this issue and a maintainer will help. 🙌
Summary
There's a typo in one of our protobuf fields:
funtion_nameshould befunction_name(missing the c). It lives on theActionMetadatamessage and flows through the generated code in every language, the Go backend, and the publishedflyteidl2package that the Python SDK depends on.Background
The field is defined here:
flyteidl2/workflow/run_definition.proto(around line 188)The
= 13is the field's wire number — we keep it as13so this change is fully backward-compatible on the wire. We're only fixing the human-readable name.What needs to change
1. Fix the proto (the only file you edit by hand for the IDL) — repo:
flyteorg/flyteIn
flyteidl2/workflow/run_definition.proto:Leave the
= 13and the// Function namecomment as-is.2. Regenerate the code stubs (proto → Go/Python/TypeScript/Rust) — repo:
flyteorg/flyteThe files under
gen/are generated — don't edit them by hand. Regenerate them:This rewrites the generated stubs, including:
gen/go/flyteidl2/workflow/run_definition.pb.go— Go fieldFuntionName→FunctionName, getterGetFuntionName()→GetFunctionName()gen/python/flyteidl2/workflow/run_definition_pb2.pyi(+_pb2.py) — Python attrfuntion_name→function_name(this is what gets published as theflyteidl2package)gen/ts/flyteidl2/workflow/run_definition_pb.ts— TypeScriptfuntionName→functionNamegen/rust/src/flyteidl2.workflow.rs— Rustfuntion_name→function_name3. Fix the backend (Go) references — repo:
flyteorg/flyteTwo hand-written spots use the old generated name. In
runs/service/run_service.go:(around line 1534, inside
actionMetadataFromModel)(around line 1832)
Note
action.FunctionName(the DB model side) is already spelled correctly — you're only renaming the generated proto symbol on the left.4. Update the Python SDK — repo:
flyteorg/flyte-sdkflyte-sdkdoesn't vendor the stubs — it depends on the publishedflyteidl2package (seeflyteidl2==2.0.xin itspyproject.toml) and importsfrom flyteidl2.workflow import run_definition_pb2.So, once the change above is merged and a new
flyteidl2package is released:flyteidl2==pin inflyte-sdk'spyproject.tomlto the version that contains the fix.src/flyte/remote/_condition.pyimportsrun_definition_pb2.)How to verify you're done (the
flyteorg/flyteside)CI's
check-generatejob also runsmake bufand fails if the generated files weren't updated — so make sure the regeneratedgen/files are committed.Acceptance criteria
In
flyteorg/flyte:funtion_name→function_nameinflyteidl2/workflow/run_definition.proto(field number stays13)gen/stubs regenerated (Go, Python, TypeScript, Rust) and committedruns/service/run_service.goupdated toFunctionNamegrep -rn "funtion" .returns nothing;go build ./runs/...passesgit commit -s)In
flyteorg/flyte-sdk(follow-up, after a newflyteidl2release):flyteidl2==pin bumped to the version containing the fixgrep -rn "funtion_name\|funtionName" .returns nothingPointers for first-time contributors
CONTRIBUTING.mdin the repo root.