Esempio n. 1
0
 def _get_descriptor(self):
     if self._descriptor is None:
         reg = get_module_registry()
         if self.package is None:
             self._descriptor = \
                 reg.get_descriptor_from_name_only(self.module)
             self.db_package = self._descriptor.identifier
             self.db_namespace = self._descriptor.namespace
         else:
             self._descriptor = reg.get_descriptor_by_name(
                 self.package, self.module, self.namespace)
     return self._descriptor
Esempio n. 2
0
 def _get_descriptor(self):
     if self._descriptor is None:
         reg = get_module_registry()
         if self.package is None:
             self._descriptor = \
                 reg.get_descriptor_from_name_only(self.module)
             self.db_package = self._descriptor.identifier
             self.db_namespace = self._descriptor.namespace
         else:
             self._descriptor = reg.get_descriptor_by_name(self.package,
                                                           self.module,
                                                           self.namespace)
     return self._descriptor
Esempio n. 3
0
        def update_identifier(identifier):
            """check for changed identifiers (e.g. edu.utah.sci.vistrails ->
            org.vistrails.vistrails) and use the current one.

            """
            reg = get_module_registry()
            MissingPackage = get_MissingPackage()
            try:
                identifier = reg.get_package_by_name(identifier).identifier
            except MissingPackage:
                # catch this later, just trying to ensure that old
                # identifiers are updated
                pass
            return identifier
Esempio n. 4
0
        def update_identifier(identifier):
            """check for changed identifiers (e.g. edu.utah.sci.vistrails ->
            org.vistrails.vistrails) and use the current one.

            """
            reg = get_module_registry()
            MissingPackage = get_MissingPackage()
            try:
                identifier = reg.get_package_by_name(identifier).identifier
            except MissingPackage:
                # catch this later, just trying to ensure that old
                # identifiers are updated
                pass
            return identifier
Esempio n. 5
0
    def get_items_from_entries(self, signature, *attrs):
        # This is reasonably messy code. The intent is that a
        # signature given by the user in a call like this
        # add_input_port(module, name, signature) should be one of the
        # following:

        # type only: add_input_port(_, _, Float)
        # type plus description: add_input_port(_, _, (Float, 'radius'))

        # multiple parameters, where each parameter can be either of the above:
        # add_input_port(_, _, [Float, (Integer, 'count')])

        registry = get_module_registry()
        entries = []

        def canonicalize(sig_item):
            if isinstance(sig_item, tuple):
                # assert len(sig_item) == 2
                # assert isinstance(sig_item[0], type)
                # assert isinstance(sig_item[1], str)
                descriptor = registry.get_descriptor(sig_item[0])
                label = sig_item[1]
                return (descriptor, label)
            elif isinstance(sig_item, list):
                descriptor = registry.get_descriptor_by_name(
                    get_vistrails_basic_pkg_id(), 'List')
                return (descriptor, None)
            else:
                # isinstance(sig_item, type):
                return (registry.get_descriptor(sig_item), None)

        # def _add_entry(sig_item):
        ps_items = []
        if not isinstance(signature, list):
            signature = [signature]
        self._resize_attrs(signature, *attrs)
        for i, item_tuple in enumerate(izip(signature, *attrs)):
            descriptor, item_label = canonicalize(item_tuple[0])
            kwargs = self._set_attrs(None, *item_tuple[1:])
            if not kwargs['label']:
                if item_label != "<no description>":
                    kwargs['label'] = item_label
            ps_item = PortSpecItem(pos=i,
                                   package=descriptor.identifier,
                                   module=descriptor.name,
                                   namespace=descriptor.namespace,
                                   **kwargs)
            ps_items.append(ps_item)
        return ps_items
Esempio n. 6
0
    def get_items_from_entries(self, signature, *attrs):
        # This is reasonably messy code. The intent is that a
        # signature given by the user in a call like this
        # add_input_port(module, name, signature) should be one of the
        # following:

        # type only: add_input_port(_, _, Float)
        # type plus description: add_input_port(_, _, (Float, 'radius'))

        # multiple parameters, where each parameter can be either of the above:
        # add_input_port(_, _, [Float, (Integer, 'count')])

        registry = get_module_registry()
        entries = []
        def canonicalize(sig_item):
            if isinstance(sig_item, tuple):
                # assert len(sig_item) == 2
                # assert isinstance(sig_item[0], type)
                # assert isinstance(sig_item[1], str)
                descriptor = registry.get_descriptor(sig_item[0])
                label = sig_item[1]
                return (descriptor, label)
            elif isinstance(sig_item, list):
                descriptor = registry.get_descriptor_by_name(
                    get_vistrails_basic_pkg_id(), 'List')
                return (descriptor, None)
            else:
                # isinstance(sig_item, type):
                return (registry.get_descriptor(sig_item), None)

        # def _add_entry(sig_item):
        ps_items = []
        if not isinstance(signature, list):
            signature = [signature]
        self._resize_attrs(signature, *attrs)
        for i, item_tuple in enumerate(izip(signature, *attrs)):
            descriptor, item_label = canonicalize(item_tuple[0])
            kwargs = self._set_attrs(None, *item_tuple[1:])
            if not kwargs['label']:
                if item_label != "<no description>":
                    kwargs['label'] = item_label
            ps_item = PortSpecItem(pos=i, 
                                   package=descriptor.identifier,
                                   module=descriptor.name,
                                   namespace=descriptor.namespace,
                                   **kwargs)
            ps_items.append(ps_item)
        return ps_items
Esempio n. 7
0
def parse_descriptor_string(d_string, cur_package=None):
    """parse_descriptor_string will expand names of modules using
    information about the current package and allowing shortcuts
    for any bundled vistrails packages (e.g. "basic" for
    "org.vistrails.vistrails.basic").  It also allows a nicer
    format for namespace/module specification (namespace comes
    fist unlike port specifications where it is after the module
    name...

    Examples:
      "persistence:PersistentInputFile", None -> 
          ("org.vistrails.vistrails.persistence", PersistentInputFile", "")
      "basic:String", None ->
          ("org.vistrails.vistrails.basic", "String", "")
      "NamespaceA|NamespaceB|Module", "org.example.my" ->
          ("org.example.my", "Module", "NamespaceA|NamespaceB")
    """

    package = ''
    qual_name = ''
    name = ''
    namespace = None
    parts = d_string.strip().split(':', 1)
    if len(parts) > 1:
        qual_name = parts[1]
        if '.' in parts[0]:
            package = parts[0]
        else:
            package = '%s.%s' % (get_vistrails_default_pkg_prefix(), parts[0])
    else:
        qual_name = d_string
        if cur_package is None:
            reg = get_module_registry()
            if reg._current_package is not None:
                package = reg._current_package.identifier
            else:
                package = get_vistrails_basic_pkg_id()
        else:
            package = cur_package
    qual_parts = qual_name.rsplit('|', 1)
    if len(qual_parts) > 1:
        namespace, name = qual_parts
    else:
        name = qual_name
    return (package, name, namespace)
Esempio n. 8
0
def parse_descriptor_string(d_string, cur_package=None):
    """parse_descriptor_string will expand names of modules using
    information about the current package and allowing shortcuts
    for any bundled vistrails packages (e.g. "basic" for
    "org.vistrails.vistrails.basic").  It also allows a nicer
    format for namespace/module specification (namespace comes
    fist unlike port specifications where it is after the module
    name...

    Examples:
      "persistence:PersistentInputFile", None -> 
          ("org.vistrails.vistrails.persistence", PersistentInputFile", "")
      "basic:String", None ->
          ("org.vistrails.vistrails.basic", "String", "")
      "NamespaceA|NamespaceB|Module", "org.example.my" ->
          ("org.example.my", "Module", "NamespaceA|NamespaceB")
    """

    package = ''
    qual_name = ''
    name = ''
    namespace = None
    parts = d_string.strip().split(':', 1)
    if len(parts) > 1:
        qual_name = parts[1]
        if '.' in parts[0]:
            package = parts[0]
        else:
            package = '%s.%s' % (_defaultPkgPrefix, parts[0])
    else:
        qual_name = d_string
        if cur_package is None:
            reg = get_module_registry()
            if reg._current_package is not None:
                package = reg._current_package.identifier
            else:
                package = get_vistrails_basic_pkg_id()
        else:
            package = cur_package
    qual_parts = qual_name.rsplit('|', 1)
    if len(qual_parts) > 1:
        namespace, name = qual_parts
    else:
        name = qual_name
    return (package, name, namespace)