JuliaIO / JuliaIO/FileIO.jl

Proposal: FileIO.save keyword argument syntax (FileIO.kwsave ?)

Open
#324 3 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
228
Forks
81
Avg merge
1d 29m
Merged PRs (30d)
1

Description

I've added a new syntax to JLD2 and I'm wondering if this could be made compatible with FileIO.

Current example using FileIO:

x = 1
y = 2
z = 42
save("test.jld2", "x", x, "y", "zebra", z)
# or
save("test.jld2", Dict("x" => x, "y" => y, "zebra" => z))

This is clearly very verbose, particularly when variable names are long.
However, this could be made much cleaner if we use keyword argument syntax instead

using JLD2
jldsave("test.jld2"; x, y, zebra=z)

What's great about this, is that we use standard julia syntax and let the parser do the work of extracting
variable names. Until now this was only possible using the @save and @load macros from e.g. BSON, JLD, or JLD2
but these macros introduce odd (and limited) syntax and keep being misunderstood by newcomers.

I'm aware that kwarg stuff is typically not type-stable but this is rarely important when IO is involved.

The problem:
There already is a single-positional-argument method for FileIO.save that returns an anonymous function
to be used with pipes.

What do you think?
Is this interface idea useful enough to add it to FileIO in some way?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with FileIO.save, especially its existing single-positional-argument method that returns an anonymous function for pipes. Clarify the desired keyword-argument interface and its compatibility with that method; done would be an agreed implementation scope and corresponding behavior in FileIO.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.