Source code for openalea.data.data

# -*- python -*-
#
#       OpenAlea.StdLib
#
#       Copyright 2006-2023 INRIA - CIRAD - INRA
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
#       OpenAlea WebSite : http://openalea.gforge.inria.fr
#
###############################################################################
""" Data Nodes """

__license__ = "Cecill-C"
__revision__ = " $Id$ "

from os.path import join
from openalea.core import Node

[docs] class Variable(Node): """ Transmit obj to output and display str as caption """ def __call__(self, inputs): """ :param inputs: list of input values :returns: Obj """ self.set_caption(str(inputs[0])) return (inputs[1], )
[docs] class Bool(Node): """ Boolean value :param ins: input 1 :param outs: input 2 """ def __init__(self, ins, outs): Node.__init__(self, ins, outs) self.set_caption(str(False)) def __call__(self, inputs): """ inputs is the list of input values :returns: the value """ res = bool(inputs[0]) self.set_caption(str(res)) return (res, )
[docs] class Int(Node): """Int Node :param ins: the stored value (default is zero) :param outs: the integer value """ def __init__(self, ins, outs): Node.__init__(self, ins, outs) self.set_caption(str(0)) def __call__(self, inputs): """ :returns: Transmit the stored value """ v = int(inputs[0]) self.set_caption(str(v)) return (v, )
[docs] class Float(Node): """ :param ins: The stored value :param outs: todo """ def __init__(self, ins, outs): Node.__init__(self, ins, outs) self.set_caption(str(0.0)) def __call__(self, inputs): """ inputs is the list of input values :returns: Transmit the stored value """ res = float(inputs[0]) self.set_caption('%.1f'%res) return (res, )
[docs] class FloatScy(Node): """Float Variable :param ins: The stored value in string format :param outs: todo """ def __init__(self, ins, outs): Node.__init__(self, ins, outs) self.set_caption(str(0.0)) def __call__(self, inputs): """ inputs is the list of input values :returns: Transmit the stored value """ res = float(inputs[0]) self.set_caption('%.1e'%res) return (res, )
[docs] class String(Node): """String Variable""" def __call__(self, inputs): """ :param inputs: list of input values :returns: Transmit the stored value """ s = str(inputs[0]) self.set_caption(repr(s)) return (s, )
[docs] class Text(Node): """Text Variable""" def __call__(self, inputs): """ inputs is the list of input values :param inputs: list of input values :type inputs: a list with 1 element :returns: Transmit the stored value """ return (str(inputs[0]), )
[docs] class DateTime(Node): """DateTime""" def __call__(self, inputs): """ inputs is the list of input values :param inputs: The stored value """ return (inputs[0], )
[docs] class List(Node): """Python List""" def __call__(self, inputs): """ inputs is the list of input value :param inputs: The stored value """ import copy try: iter(inputs[0]) return (copy.copy(inputs[0]), ) except: return ([copy.copy(inputs[0])], )
[docs] class Dict(Node): """Python Dictionary""" def __call__(self, inputs): """ inputs is the list of input values :param inputs: The stored value """ import copy return (copy.copy(inputs[0]), )
[docs] class Pair(Node): """Python 2-uple generator""" def __call__(self, inputs): """ :param inputs: list of 2 values :returns: tuple of the 3 inputs """ return ((inputs[0], inputs[1]), )
[docs] class Tuple3(Node): """ Python 3-uple generator """ def __call__(self, inputs): """ returns 3-tuple :param inputs: list of 3 values :returns: tuple of the 3 inputs """ return ((inputs[0], inputs[1], inputs[2]), )
[docs] def list_select(items, index): """ __getitem__ """ try: return items[index] except: return None
[docs] def none(): """ None singleton """ return None,
# DEPRECATED
[docs] class FileName(Node): """A file path """ def __call__(self, inputs): """ :param inputs: the list of input values :returns: the file path string """ print(("This node is DEPRECATED. Use %s instead" % "Catalog.File.FileName")) fname, cwd = inputs if len(cwd)>0 : return (join(str(cwd), str(fname)), ) else : return (str(fname),)
[docs] class DirName(Node): """A directory path """ def __call__(self, inputs): """ :param inputs: the list of input values :returns: the path string """ print(("This node is DEPRECATED. Use %s instead" % "Catalog.File.DirName")) rep, cwd = inputs if len(cwd) > 0 : return ( join(str(cwd),str(rep)), ) else : return ( str(rep), )
[docs] class PackageDir(Node): """ """ def __call__(self, inputs): """ :param inputs: list of input values :returns: The Path of the package wralea """ print(("This node is DEPRECATED. Use %s instead" % \ "Catalog.File.PackageDir")) pname = str(inputs[0]) from openalea.core.pkgmanager import PackageManager pm = PackageManager() pkg = pm.get(pname) path = '' if pkg : path = pkg.path return (path, )