def handle_repository_uninstall( self, repository ):
     """Remove the dependency relationships for a repository that was just uninstalled."""
     for tool_dependency in repository.tool_dependencies:
         tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
         # Remove this tool_dependency from all values in
         # self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies
         altered_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies = {}
         for td_tup, installed_runtime_dependent_tool_dependency_tups in \
             self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies.items():
             if tool_dependency_tup in installed_runtime_dependent_tool_dependency_tups:
                 # Remove the tool_dependency from the list.
                 installed_runtime_dependent_tool_dependency_tups.remove( tool_dependency_tup )
             # Add the possibly altered list to the altered dictionary.
             altered_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies[ td_tup ] = \
                 installed_runtime_dependent_tool_dependency_tups
         self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies = \
             altered_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies
         # Remove the entry for this tool_dependency from self.runtime_tool_dependencies_of_installed_tool_dependencies.
         self.remove_entry_from_runtime_tool_dependencies_of_installed_tool_dependencies( tool_dependency )
         # Remove the entry for this tool_dependency from 
         # self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies.
         self.remove_entry_from_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies( tool_dependency )
     # Remove this repository's entry from self.installed_tool_dependencies_of_installed_repositories.
     self.remove_entry_from_installed_tool_dependencies_of_installed_repositories( repository )
     # Remove this repository's entry from self.tool_dependencies_of_installed_repositories
     self.remove_entry_from_tool_dependencies_of_installed_repositories( repository )
     # Remove this repository's entry from self.installed_repository_dependencies_of_installed_repositories.
     self.remove_entry_from_installed_repository_dependencies_of_installed_repositories( repository )
     # Remove this repository's entry from self.repository_dependencies_of_installed_repositories.
     self.remove_entry_from_repository_dependencies_of_installed_repositories( repository )
 def remove_entry_from_runtime_tool_dependencies_of_installed_tool_dependencies( self, tool_dependency ):
     """Remove an entry from self.runtime_tool_dependencies_of_installed_tool_dependencies."""
     tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
     if tool_dependency_tup in self.runtime_tool_dependencies_of_installed_tool_dependencies:
         tool_shed_repository_id, name, version, type = tool_dependency_tup
         debug_msg = "Removing entry for version %s of %s %s from runtime_tool_dependencies_of_installed_tool_dependencies." % \
             ( version, type, name )
         log.debug( debug_msg )
         del self.runtime_tool_dependencies_of_installed_tool_dependencies[ tool_dependency_tup ]
 def add_entry_to_runtime_tool_dependencies_of_installed_tool_dependencies( self, tool_dependency ):
     """Add an entry to self.runtime_tool_dependencies_of_installed_tool_dependencies."""
     tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
     if tool_dependency_tup not in self.runtime_tool_dependencies_of_installed_tool_dependencies:
         tool_shed_repository_id, name, version, type = tool_dependency_tup
         debug_msg = "Adding an entry for version %s of %s %s " % ( version, type, name )
         debug_msg += "to runtime_tool_dependencies_of_installed_tool_dependencies."
         log.debug( debug_msg )
         runtime_dependent_tool_dependency_tups = \
             tool_dependency_util.get_runtime_dependent_tool_dependency_tuples( self.app, tool_dependency, status=None )
         self.runtime_tool_dependencies_of_installed_tool_dependencies[ tool_dependency_tup ] = \
             runtime_dependent_tool_dependency_tups
 def add_entry_to_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies( self, tool_dependency ):
     """Add an entry to self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies."""
     tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
     if tool_dependency_tup not in self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies:
         tool_shed_repository_id, name, version, type = tool_dependency_tup
         debug_msg = "Adding an entry for version %s of %s %s " % ( version, type, name )
         debug_msg += "to installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies."
         log.debug( debug_msg )
         status = self.install_model.ToolDependency.installation_status.INSTALLED
         installed_runtime_dependent_tool_dependency_tups = \
             tool_dependency_util.get_runtime_dependent_tool_dependency_tuples( self.app, tool_dependency, status=status )
         self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies[ tool_dependency_tup ] = \
             installed_runtime_dependent_tool_dependency_tups
 def add_entry_to_tool_dependencies_of_installed_repositories( self, repository ):
     """Add an entry to self.tool_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup not in self.tool_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to tool_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         tool_dependency_tups = []
         for tool_dependency in repository.tool_dependencies:
             tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
             tool_dependency_tups.append( tool_dependency_tup )
         self.tool_dependencies_of_installed_repositories[ repository_tup ] = tool_dependency_tups
 def handle_tool_dependency_install( self, repository, tool_dependency ):
     """Load the dependency relationships for a tool dependency that was just installed independently of its containing repository."""
     # The received repository must have a status of 'Installed'.  The value of tool_dependency.status will either be
     # 'Installed' or 'Error', but we only need to change the in-memory dictionaries if it is 'Installed'.
     if tool_dependency.is_installed:
         # Populate self.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies.
         self.add_entry_to_installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies( tool_dependency )
         # Populate self.installed_tool_dependencies_of_installed_repositories.
         repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
         tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
         if repository_tup in self.installed_tool_dependencies_of_installed_repositories:
             self.installed_tool_dependencies_of_installed_repositories[ repository_tup ].append( tool_dependency_tup )
         else:
             self.installed_tool_dependencies_of_installed_repositories[ repository_tup ] = [ tool_dependency_tup ]
 def add_entry_to_installed_tool_dependencies_of_installed_repositories( self, repository ):
     """Add an entry to self.installed_tool_dependencies_of_installed_repositories."""
     repository_tup = repository_dependency_util.get_repository_tuple_for_installed_repository_manager( repository )
     if repository_tup not in self.installed_tool_dependencies_of_installed_repositories:
         tool_shed, name, owner, installed_changeset_revision = repository_tup
         debug_msg = "Adding an entry for revision %s of repository %s owned by %s " % ( installed_changeset_revision, name, owner )
         debug_msg += "to installed_tool_dependencies_of_installed_repositories."
         log.debug( debug_msg )
         installed_tool_dependency_tups = []
         for tool_dependency in repository.tool_dependencies:
             if tool_dependency.status == self.app.install_model.ToolDependency.installation_status.INSTALLED:
                 tool_dependency_tup = tool_dependency_util.get_tool_dependency_tuple_for_installed_repository_manager( tool_dependency )
                 installed_tool_dependency_tups.append( tool_dependency_tup )
         self.installed_tool_dependencies_of_installed_repositories[ repository_tup ] = installed_tool_dependency_tups