Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/Fable.Transforms/Python/Fable2Python.Transforms.fs
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,9 @@ let transformCallArgs
|> List.unzip
|> fun (kv, stmts) ->
kv
|> List.map (fun (keyword, value) -> Keyword.keyword (Identifier keyword, value)),
|> List.map (fun (keyword, value) ->
Keyword.keyword (Identifier(Naming.toPythonNaming keyword), value)
),
stmts |> List.collect id

args, Some objArg, stmts
Expand Down Expand Up @@ -717,7 +719,9 @@ let transformCallArgs
|> List.unzip
|> fun (kv, stmts) ->
kv
|> List.map (fun (keyword, value) -> Keyword.keyword (Identifier keyword, value)),
|> List.map (fun (keyword, value) ->
Keyword.keyword (Identifier(Naming.toPythonNaming keyword), value)
),
stmts |> List.collect id

[], Some objArg, stmts
Expand Down
19 changes: 19 additions & 0 deletions tests/Python/TestNonRegression.fs
Original file line number Diff line number Diff line change
Expand Up @@ -265,3 +265,22 @@ type Disposable(cancel) =
let ``test static properties works when inheriting from IDisposable`` () =
let d: IDisposable = Disposable.Empty
d.Dispose()

// Test that named arguments are converted to snake_case in Python
module NamedArgsSnakeCase =
[<AttachMembers>]
type TestRunner(testCase: string, ?configArgs: string array) =
member val TestCase = testCase with get
member val ConfigArgs = defaultArg configArgs [||] with get

[<Fact>]
let ``test named arguments are converted to snake_case`` () =
// Test with optional named argument
let runner1 = NamedArgsSnakeCase.TestRunner("test", configArgs = [| "arg1"; "arg2" |])
equal "test" runner1.TestCase
equal [| "arg1"; "arg2" |] runner1.ConfigArgs

// Test with all named arguments
let runner2 = NamedArgsSnakeCase.TestRunner(testCase = "test2", configArgs = [| "arg3" |])
equal "test2" runner2.TestCase
equal [| "arg3" |] runner2.ConfigArgs
Loading