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
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
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
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
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)
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)