Open
Description
Should we expose a slightly nicer way of calling non-spm functions?
I've been using this in some of my code:
class Builtin:
# Wrapper for calls to builtin functions
class WrappedBuiltin:
def __init__(self, name):
self.name = name
def __call__(self, *args, **kwargs):
return Runtime.call(self.name, *args, **kwargs)
def __getattr__(self, name):
return self.WrappedBuiltin(name)
def import_in(self, env, *args, **kwargs):
for name in args:
env[name] = getattr(self, name)
for as_name, name in kwargs.items():
env[as_name] = getattr(self, name)
builtin = Builtin()
matlab_figure = builtin.figure # or: builtin.import_in(locals(), matlab_figure="figure")
And, related, I use this helper to save variables in a mat file:
save = Runtime.call("eval", "@(f,x) save(f,'-struct',x)")
x = ...
save("path/to/file.mat", {"x": x})
which we could implement somewhere in __wrapper__
, since it's quite commonly used. Or maybe I should just use
Runtime.call("eval", "path/to/file.mat", "-struct", {"x": x})
?