zincware / ZnTrack

Create, visualize, run & benchmark DVC pipelines in Python & Jupyter notebooks.
https://zntrack.readthedocs.io
Apache License 2.0
44 stars 4 forks source link

Wrapper for Python functions #793

Open PythonFZ opened 2 months ago

PythonFZ commented 2 months ago

If you want to do something like:

class MyNode:
    self.inputs = zntrack.deps()

    def run(self):
        self.data = sum(self.inputs)

class Linspace(zntrack.Node):
    args: tuple = zntrack.params()
    results = zntrack.outs()

   def run(self):
        self.results = np.linspace(*args)

MyNode(inputs=Linspace(args=(0,1,100)))

this could be simplified to

zn_linspace = zntrack.nodify(np.linspace) # or zntrack.convert, idk
MyNode(inputs=zn_linspace(0, 1, 100))

This would only work if:

and would create

class Linspace(zntrack.Node):
   args: tuple = zntrack.params()
   kwargs: dict = zntrack.param()

   results: any = zntrack.outs()

   def run(self):
       self.results = np.linspace(*args, **kwargs)