def registerStep( self, id, handler, title=None, description=None ): """ Register an export step. o 'id' is the unique identifier for this step o 'handler' is the dottoed name of a handler which should implement IImportPlugin. o 'title' is a one-line UI description for this step. If None, the first line of the documentation string of the step is used, or the id if no docstring can be found. o 'description' is a one-line UI description for this step. If None, the remaining line of the documentation string of the step is used, or default to ''. """ if not isinstance(handler, str): handler = _getDottedName( handler ) if title is None or description is None: method = _resolveDottedName(handler) if method is None: t,d = id, '' else: t, d = _extractDocstring( method, id, '' ) title = title or t description = description or d info = { 'id' : id , 'handler' : handler , 'title' : title , 'description' : description } self._registered[ id ] = info
def registerStep( self , id , version=None , handler=None , dependencies=() , title=None , description=None ): """ Register a setup step. o 'id' is a unique name for this step, o 'version' is a string for comparing versions, it is preferred to be a yyyy/mm/dd-ii formatted string (date plus two-digit ordinal). when comparing two version strings, the version with the lower sort order is considered the older version. - Newer versions of a step supplant older ones. - Attempting to register an older one after a newer one results in a KeyError. o 'handler' is the dottoed name of a handler which should implement IImportPlugin. o 'dependencies' is a tuple of step ids which have to run before this step in order to be able to run at all. Registration of steps that have unmet dependencies are deferred until the dependencies have been registered. o 'title' is a one-line UI description for this step. If None, the first line of the documentation string of the handler is used, or the id if no docstring can be found. o 'description' is a one-line UI description for this step. If None, the remaining line of the documentation string of the handler is used, or default to ''. """ already = self.getStepMetadata( id ) if handler is None: raise ValueError, 'No handler specified' if already and already[ 'version' ] > version: raise KeyError( 'Existing registration for step %s, version %s' % ( id, already[ 'version' ] ) ) if not isinstance(handler, str): handler = _getDottedName( handler ) if title is None or description is None: method = _resolveDottedName(handler) if method is None: t,d = id, '' else: t, d = _extractDocstring( method, id, '' ) title = title or t description = description or d info = { 'id' : id , 'version' : version , 'handler' : handler , 'dependencies' : dependencies , 'title' : title , 'description' : description } self._registered[ id ] = info