My laptop is still broken in weird ways, but it's now mostly working, thanks to some tips on a workaround that I got from Launchpad. There's supposed to be a bug report, but there's so much going on that I'm kind of not sure how to isolate a single bug out of everything that I'm seeing.
Anyway, I did a little work fixing bugs in unused code paths in MOTR yesterday, but let's see what I can do in terms of filling in the stubs I wrote.
First up is the as_arg method for FlexIn. This has to convert a Dynamic[Input[PathStr]] into a Dynamic[CmdMeta]. The outermost layer of this is accomplished with the dynamic.reduce function, which takes a reducer function, a Dynamic object to provide a template for the arguments to the reducer, a set of Key objects to iterate over, and an initial value. For this method, the values break down as follows:
- The initial value is the empty CmdMeta.
- The keys are the argument to the method; the types involved may need to change somewhere.
- If the prefix value is None, then the template is just the result of mapping the FlexIn's wrapped value into a CmdMeta, which is easy. If the prefix is not None, then it's as above, but mapping the prefix and the wrapped value.
- The reducer is CmdMeta.combine.
Well, let's see what kind of problems this gives me.
Not too bad. All of the problems were misunderstandings on my end, that I cleared up quickly.
Anyway, there are five more methods to cover... Next up, in terms of ease versus utility, I can either take a look at the as_extra method for FlexIn, or the as_arg method for FlexOut, then do the other one of those, then as_extra for FlexOut. After that, I can do the as_env_var methods for completeness, but I don't think I need those right now.
For now, I'm going to take a little break from the code, and take a look at it with fresh eyes later.